代码之家  ›  专栏  ›  技术社区  ›  tjb

构建Bech32地址

  •  0
  • tjb  · 技术社区  · 4 年前

    我试着按照这里的步骤 https://en.bitcoin.it/wiki/Bech32 以生成有效的bech32地址。我被困在了第一步:

    1. 具有压缩的公钥(0x02或0x03后跟32字节X坐标): 0279be667ef9dcbbac55a06295ce870b07029fcdb2dce28d959f2815b16f81798
    2. 对公钥执行SHA-256哈希: 0f715baf5d4c2ed29785cef29e562f73488c8a2b9dbc5700b361d54b9b0554

    以下是我尝试过的一件事:

    >>> import hashlib
    >>> m = hashlib.sha256()
    >>> m.update('0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798')
    >>> m.hexdigest()
    'd13c888cfd35d6ab67dc3f67edcc401833e6ae4eec20b254b1981b187946ed91'
    

    注:

    1. 我仅限于python 2.7.18
    2. 我制作这些地址是为了测试目的,它们不是真正使用所必需的,但应该是有效的
    3. 如果你知道如何完成步骤3+,也请分享:)
    4. 这里有一个假定的参考实现: https://github.com/fiatjaf/bech32/blob/master/bech32/__init__.py ,但我无法理解……这似乎与所描述的过程完全不同。
    0 回复  |  直到 4 年前
        1
  •  2
  •   chepner    4 年前

    看起来你在散列二进制的字符串表示,而不是二进制流本身。不确定在Python 2.7中实现这一点的最具Python风格的方法是什么,但您可以通过以下方式获得所需内容:

    import hashlib
    
    str_of_key = '0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798'
    hashlib.new('sha256', str_of_key.decode('hex')).hexdigest()
    

    供参考,有关问题 .decode('hex') : https://stackoverflow.com/a/5682984/1150918

    推荐文章