I am using Python 2.7 and need to find keccak
hash for solidity events. However I don't see a default lib for the same.
I installed sha3
but it doesn't seem to provide this functionality. Tried pysha3 with below code
import sha3
k = sha3.keccak_512()
k.update('age')
k.hexdigest()
But got the error
AttributeError: 'module' object has no attribute 'keccak_512'
sha3 doesn't have this module indeed
>>> 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']
pycryptodome pip install pycryptodome
from Crypto.Hash import keccak
k = keccak.new(digest_bits=256)
k.update('age')
print k.hexdigest()
pysha3 pip install pysha3
import sha3
k = sha3.keccak_256()
k.update('age')
print k.hexdigest()
Please note:
python3
the strings need to be passed in binary k.update(b'age')
k
again otherwise it will update the value on top of the existing one.If you have both sha3
and pysha3
, it won't work, since import sha3
will default to sha3
lib.
Online handy tool