如何在 Python 中找到 keccak 256 哈希

How can I find keccak 256 hash in Python

我正在使用 Python 2.7,需要为 solidity 事件找到 keccak 哈希。但是我没有看到相同的默认库。

我安装了 sha3 但它似乎没有提供此功能。已尝试 pysha3 使用以下代码

  import sha3
  k = sha3.keccak_512()
  k.update('age')
  k.hexdigest()

但是出现错误

AttributeError: 'module' object has no attribute 'keccak_512'

sha3确实没有这个模块

>>> dir(sha3)
['SHA3224', 'SHA3256', 'SHA3384', 'SHA3512', 'SHAKE128', 'SHAKE256', '_SHA3Base', '_SHAKEBase', '__all__', '__author__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '__path__', '__version__', '_sha3', 'binascii', 'copy', 'hashlib', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'shake128', 'shake256']
  1. pycryptodome

     from Crypto.Hash import keccak
     k = keccak.new(digest_bits=256)
     k.update('age')
     print k.hexdigest()
    
  2. pysha3

    import sha3
    k = sha3.keccak_256()
    k.update('age')
    print k.hexdigest()
    

请注意:

  1. 对于python3,字符串需要以二进制形式传递k.update(b'age')
  2. 如果你想找到一个新的散列,你需要再次初始化 k 否则它将更新现有散列之上的值。

如果您同时拥有 sha3pysha3,它将不起作用,因为 import sha3 将默认为 sha3 lib.

在线得心应手tool