Pregunta

Tengo un problema bastante extraño. Para una tabla hash que necesito distribuida a ser capaz de hacer algunas operaciones matemáticas simples en los hash MD5. Estos incluyen una suma (suma numérico representado por la hash) y una operación de módulo. Ahora me pregunto cuál es la mejor manera de poner en práctica estas operaciones es. Estoy usando hashlib para calcular los valores hash, pero dado que los hashes que recibo son luego cadena, ¿cómo puedo calcular con ellos?

¿Fue útil?

Solución

Puede utilizar el método para obtener hexdigest() dígitos hexadecimales, y luego convertirlos a un número:

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

Si ya tiene la salida de digest(), puede convertirlo en dígitos hexadecimales:

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

Editar

En el segundo caso, en realidad es más fácil de convertir el uso de .encode('hex') o binascii.hexlify:

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top