256-битная хэш-функция Python с выводом числа - PullRequest
12 голосов
/ 06 января 2011

Мне нужна хеш-функция с 256-битным выходом (как long int).

Сначала я подумал, что мог бы использовать SHA256 из hashlib, но у него есть строковый вывод, и мне нужно число для вычисления.

Преобразование 32-байтовой строки в long тоже подойдет, но я ничего не нашел.В структуре есть функция распаковки, но она работает только для типов длиной 8 байт, а не для длинных типов.

Ответы [ 2 ]

20 голосов
/ 06 января 2011

Как насчет:

>>> import hashlib
>>> h = hashlib.sha256('something to hash')
>>> h.hexdigest()
'a3899c4070fc75880fa445b6dfa44207cbaf924a450ce7175cd8500e597d3ec1'
>>> n = int(h.hexdigest(),base=16)
>>> print n
73970130776712578303406724846815845410916448611708558169000368019946742824641
2 голосов
/ 18 июля 2017

Python 3.x обновление

import hashlib
value = 'something to hash'
t_value = value.encode('utf8')
h = hashlib.sha256(t_value)
h.hexdigest()
n = int(h.hexdigest(),base=16)
print(n)
...