Las operaciones en los hashes de Python
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?
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