Domanda

Ho un problema piuttosto strano. Per un Hash Table ho bisogno Distribuito di essere in grado di fare alcune semplici operazioni matematiche su MD5 hash. Questi includono una somma (somma numerico rappresentato dalla hash) e un'operazione di modulo. Ora mi chiedo che cosa il modo migliore per attuare queste operazioni è. Sto usando hashlib per calcolare gli hash, ma dal momento che gli hash che ricevo vengono poi stringa, come faccio a calcolare con loro?

È stato utile?

Soluzione

È possibile utilizzare il metodo hexdigest() per ottenere cifre esadecimali, e poi convertirli in un numero:

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

Se hai già l'uscita di digest(), è possibile convertirlo in cifre esadecimali:

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

Modifica :

Per il secondo caso, in realtà è più facile da convertire utilizzando .encode('hex') o binascii.hexlify:

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top