pysha3没有给出正确的答案

时间:2016-02-11 08:08:38

标签: python sha sha-3

使用以下代码

# $ pip install pysha3
import sys
if sys.version_info < (3, 4):
    import sha3

import hashlib

s = hashlib.new("sha3_512")

s.update(b"")
print(s.hexdigest())

我正在

0eab42de4c3ceb9235fc91acffe746b29c29a8c366b7c60e4e67c466f36a4304c00fa9caf9d87976ba469bcbe06713b435f091ef2769fb160cdab33d3670680e

而不是

a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26

比照https://en.wikipedia.org/wiki/SHA-3#Examples_of_SHA-3_variants

有人可以告诉我吗?

2 个答案:

答案 0 :(得分:3)

您发现的pysha3模块基于SHA-3规范的草案,在标准化之前。

该模块是作为Python issue 16113的POC创建的,并且该代码自2012年以来未更新.NIST标准直到2015年10月才最终确定。因此,如果您不能使用该实施期望它遵循发布的标准。

该票证链接到声称已更新为标准的实施:https://github.com/bjornedstrom/python-sha3。该软件包似乎没有在PyPI上列出,但可以直接从GitHub安装pip:

pip install git+https://github.com/bjornedstrom/python-sha3

并且此包确实产生了预期的结果:

>>> import hashlib
>>> import sha3
>>> hashlib.sha3_512(b'').hexdigest()
b'a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26'

此软件包不会修补内置的hashlib.new()构造函数,但可以通过将构造函数插入模块缓存中来轻松完成:

>>> hashlib.__builtin_constructor_cache['sha3_512'] = sha3.sha3_512
>>> hashlib.new('sha3_512')
<sha3.SHA3512 object at 0x10b381a90>

答案 1 :(得分:0)

SHA3已添加到Python 3.6中的内置hashlib模块中:

  

What’s New In Python 3.6

     

SHA-3哈希函数sha3_224()sha3_256()sha3_384(),   sha3_512()SHAKE哈希函数shake_128()shake_256()是。>>> import sys >>> import hashlib >>> s = hashlib.new("sha3_512") # sha3_224, sha3_256 and sha3_384 are also available >>> s.update(b"") >>> print(s.hexdigest()) a69f73cca23a9ac5c8b567dc185a756e97c982164fe25859e0d1dcc1475c80a615b2123af1f5f94c11e3e9402c3ac558f500199d95b6d3e301758586281dcd26   添加。 (供稿人:Christian Heimes,发行于16113. Keccak Code   包括Guido Bertoni,Joan Daemen,MichaëlPeeters,Gilles Van   Assche和Ronny Van Keer。)

可以按照以下方式使用:

if( *(team[j] ) ==*( team[i] ) ){