我正在使用 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']
pycryptodomepip install pycryptodome
from Crypto.Hash import keccak
k = keccak.new(digest_bits=256)
k.update('age')
print k.hexdigest()
pysha3pip install pysha3
import sha3
k = sha3.keccak_256()
k.update('age')
print k.hexdigest()
请注意:
python3
,字符串需要以二进制形式传递
k.update(b'age')
k
,否则它将更新现有哈希值之上的值。
sha3
和
pysha3
,则它将不起作用,因为
import sha3
将默认为
sha3
lib。在线好用