2011-01-06 16 views
10

Necesito una función hash con una salida de 256 bits (siempre int).Función hash Python de 256 bits con número de salida

Primero pensé que podría usar SHA256 del hashlib pero tiene un String Output y necesito un número para calcular.

Convertir la cadena de 32 bytes a una larga funcionaría también pero no encontré nada. En struct hay una función de desempaquetado, pero esto solo funciona para tipos de 8 Byte long y no para longs largos.

Respuesta

17

¿Qué tal:

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

actualización 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) 
Cuestiones relacionadas