Python

DER簽名十六進制的正則表達式(也是req,地址,TxID)?

  • November 27, 2015

我正在使用 Python (2.7) 及其re模組來辨識各種比特幣數據,即:

地址、DER sigs、OP 返回十六進制數據、TxID

我一直在使用re.compile:例如,對於有效的 Tx 雜湊(TxID):

RE_TXHASH = re.compile('^[0-9a-fA-F]{64}$')
if bool(re.match(RE_TXHASH, 'f'*64)):    # 'f'*63 would fail
   print 'valid tx hash!'
else:
   raise Exception("invalid tx hash!")

我正在尋找以下正則表達式模式(或我目前最佳嘗試的輸入):

  1. DER 簽名:通用格式*"30[sig_size]02[r_size]02[s_size][sighash]"*
  2. 比特幣地址: re.compile('^[123mn]{1}[a-km-zA-HJ-NP-Z0-9]{26,33}$')
  3. OP 返回十六進製字元串:re.compile('^(6a){1}[a-fA-F0-9]{0,80}$')
  4. TxID:re.compile('^[0-9a-fA-F]{64}$')

編輯:澄清一下,有人可以為此提供正則表達式模式嗎?"30[sig_size]02[r_size]02[s_size][sighash]"

對於 DER 信號,R 或 S 可能非常小。

  1. 標誌:re.compile('^30[0-9a-fA-F]{72,136}02[0-9a-fA-F]{0,64}02[0-9a-fA-F]{0,64}[0-9a-fA-F]{8}')

比特幣地址不能有 0。另外 {1} 是多餘的

  1. 比特幣地址:re.compile('^[123mn][a-km-zA-HJ-NP-Z1-9]{26,33}$')

同樣,對於 OP_RETURN,{1} 是多餘的。此外,a 可能會大寫。

  1. OP 返回十六進製字元串:re.compile('^6[aA][a-fA-F0-9]{0,80}$')

TXID 沒問題

引用自:https://bitcoin.stackexchange.com/questions/41525