如何在Python中找到keccak 256哈希

2024-09-28 23:08:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用Python2.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']

Tags: 代码import功能ageobject错误事件update
1条回答
网友
1楼 · 发布于 2024-09-28 23:08:24
  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将默认为sha3lib

在线便利tool

相关问题 更多 >