1

Pythonで試したコードは次のとおりですが、次のようになりますAttributeError

>>> import hmac
>>> import hashlib
>>> h=hashlib.new('ripemd160')
>>> hmac.new("bedford","Hello",hashlib.ripemd160)
    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    AttributeError: module 'hashlib' has no attribute 'ripemd160'

Python のドキュメントと多くのフォーラムを検索しましたが、ripemd160 と Python についてはあまり見つかりません。

4

3 に答える 3

1

まず、キーはバイナリ (Python3) -> である必要がありますb"bedford"

次に、ユニコードなどの場合はメッセージをエンコードする必要があります(Python3)->codecs.encode("Hello")

最後に、lambda関数を使用します。

import codecs
import hmac
import hashlib
h=hashlib.new('ripemd160')
hmac.new(b"bedford", codecs.encode("Hello"), lambda: h)
于 2016-06-04T08:18:41.053 に答える
1

これはうまくいきます:

hmac.new("bedford", "Hello", lambda: hashlib.new('ripemd160'))

また

h=hashlib.new('ripemd160')
hmac.new("bedford", "Hello", lambda: h)
于 2016-06-04T08:16:14.607 に答える
1

ripemd160hashlibモジュールでは直接サポートされていません:

>>> hashlib.algorithms 

このモジュールでサポートされることが保証されているハッシュ アルゴリズムの名前を提供するタプル。

このモジュールでは、以下がサポートされています。md5, sha1, sha224, sha256, sha384, sha512

したがって、newコンストラクターを再度使用するか、既に作成したコンストラクターへの参照を渡す必要があります。

于 2016-06-04T08:11:53.530 に答える