1

我一直在使用 Python 的 Blake2b 实现(https://docs.python.org/3/library/hashlib.html#blake2),如下所示:

>>> from hashlib import blake2b
>>>
>>> hashGenerator = blake2b()
>>> hashFN = hashGenerator.copy()
>>> hashFN.update(b'hi ho! hi ho! off to code I go...')
>>> hashFN.hexdigest()
'bd68fa3ae182a5485ae97bac10913c595358bd761a0ce91a14699907abf49dab29cba198903d80c1c25cc4b73eaa1c00d07a0c1572df04ef232cadddac8c381a'
>>>
>>> hashGenerator = blake2b(digest_size=16)
>>> hashFN = hashGenerator.copy()
>>> hashFN.update(b'hi ho! hi ho! off to code I go...')
>>> hashFN.hexdigest()
'626d821bd03ae3d7a523b04162c08468'

下载并编译包含在 RFC 7693 参考代码中的 b2sum 程序(来自这里https://github.com/BLAKE2/BLAKE2)后,我们观察到(注意:LANG=en_US.UTF-8):

MacBookMax:b2sum jlh$ echo "hi ho! hi ho! off to code I go..." | ./b2sum -a blake2b
9b6372572a562989055fdf2837fa086c1ccc7c3c72e3d8bbb1785a0691bdd582499466d1dc6f513a4000f59c74619ca1e631a6a81f03c67a3771702e2d1b0b62  -
MacBookMax:b2sum jlh$ echo "hi ho! hi ho! off to code I go..." | ./b2sum -a blake2b -l 128
602a0bfeab058e6e5c9806a27bed4e72  -
MacBookMax:b2sum jlh$

他们不同意...我在 Python 脚本中尝试了不同的字符编码和方法参数,但我无法达成一致。

由于我使用多种语言来处理相同的数据流,因此学习如何使 Python 实现与 C 参考实现一致会非常有帮助。

提前感谢您的帮助。

4

0 回答 0