2

次のコードでは、

# $ 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

誰でも私にアドバイスできますか?

4

2 に答える 2

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>
于 2016-02-11T08:33:42.430 に答える