Frage

Ich habe ein ziemlich seltsames Problem. Für eine Distributed Hash Table Ich muss in der Lage, einige einfache mathematische Operationen auf MD5-Hashes zu tun. Dazu gehört eine Summe (numerische Summe durch die Hash dargestellt) und eine Modulo-Operation. Jetzt frage ich mich, was der beste Weg, um diese Operationen zu implementieren ist. Ich hashlib unter Verwendung der Hash-Werte zu berechnen, aber da die Hashes ich sind dann erhalten, String, wie berechne ich mit ihnen?

War es hilfreich?

Lösung

Sie können die hexdigest() Methode verwenden hexadezimale Ziffern zu bekommen, und dann wandeln sie in einer Zahl:

>>> h = hashlib.md5('data')
>>> int(h.hexdigest(), 16)
188041611063492600696317361555123480284L

Wenn Sie bereits die Ausgabe von digest() haben, können Sie es in hexadezimalen Ziffern umwandeln können:

>>> hexDig = ''.join('%02x' % ord(x) for x in h.digest())
>>> int(hexDig, 16)
188041611063492600696317361555123480284L

Bearbeiten :

Für den zweiten Fall ist es tatsächlich einfacher, mit .encode('hex') oder binascii.hexlify zu konvertieren:

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top