Создайте хеш-значение с помощью пользовательского ключа и алгоритма palemd160

Вот код, который я пробовал в 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 и множество форумов, но не нашел ничего о palemd160 и Python.

3 ответа

ripemd160 не поддерживается напрямую hashlib модуль:

>>> hashlib.algorithms 

Кортеж, содержащий имена алгоритмов хеширования, гарантированно поддерживаемых этим модулем.

Модуль поддерживает следующее: md5, sha1, sha224, sha256, sha384, sha512

Так что вам нужно использовать new конструктор снова или передайте ссылку на тот, который вы уже создали.

Это будет работать:

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

или же

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

Во-первых, ключ должен быть двоичным (Python3) -> b"bedford",

Затем сообщение должно быть закодировано, если это Unicode и т. Д. (Python3) -> codecs.encode("Hello")

Наконец, используйте lambda функции:

import codecs
import hmac
import hashlib
h=hashlib.new('ripemd160')
hmac.new(b"bedford", codecs.encode("Hello"), lambda: h)
Другие вопросы по тегам