2011-01-06 15 views
10

我需要一个带有256位输出的散列函数(只要int)。Python 256bit散列函数与数字输出

首先我想我可以使用hashlib中的SHA256,但它有一个字符串输出,我需要一个数字来计算。

将32字节字符串转换为long也可以,但我没有找到任何东西。 在struct中有一个解压缩函数,但这只适用于8字节长的类型,而不适用于更长的long类型。

回答

17

如何:

>>> import hashlib 
>>> h = hashlib.sha256('something to hash') 
>>> h.hexdigest() 
'a3899c4070fc75880fa445b6dfa44207cbaf924a450ce7175cd8500e597d3ec1' 
>>> n = int(h.hexdigest(),base=16) 
>>> print n 
73970130776712578303406724846815845410916448611708558169000368019946742824641 
1

蟒蛇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)