2011-01-06 4 views
10

Ich brauche eine Hash-Funktion mit einer 256bit-Ausgabe (als long int).Python 256bit Hash-Funktion mit Zahlenausgabe

Zuerst dachte ich, ich könnte SHA256 aus dem hashlib verwenden, aber es hat eine String-Ausgabe und ich brauche eine Zahl mit zu berechnen.

Konvertieren der 32 Byte String zu einem langen würde auch funktionieren, aber ich habe nichts gefunden. In struct gibt es eine Entpackungsfunktion, aber das funktioniert nur für 8 Byte lange Typen und nicht für lange.

Antwort

17

Wie wäre:

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

Python 3.x Update

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)