这是我在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文档和很多论坛,但在Maturemd160和Python上找不到太多。
答案 0 :(得分:1)
while ( sentence[number] != '\0' )
模块不直接支持 ripemd160
:
hashlib
提供哈希算法名称的元组 保证得到这个模块的支持。
模块支持以下内容:>>> hashlib.algorithms
因此,您需要再次使用md5, sha1, sha224, sha256, sha384, sha512
构造函数或将引用传递给您已创建的构造函数。
答案 1 :(得分:1)
这样可行:
hmac.new("bedford", "Hello", lambda: hashlib.new('ripemd160'))
或
h=hashlib.new('ripemd160')
hmac.new("bedford", "Hello", lambda: h)
答案 2 :(得分:1)
首先,密钥需要是二进制(Python3) - &gt; b"bedford"
。
然后,如果消息是unicode等,则需要对消息进行编码(Python3) - &gt; codecs.encode("Hello")
最后,使用lambda
functions:
import codecs
import hmac
import hashlib
h=hashlib.new('ripemd160')
hmac.new(b"bedford", codecs.encode("Hello"), lambda: h)