J'ai un problème plutôt étrange. Pour une table de hachage distribuée, je dois être capable de faire quelques opérations mathématiques simples sur les hachages MD5. Ceux-ci incluent une somme (somme numérique représentée par le hachage) et une opération modulo. Maintenant, je me demande quelle est la meilleure façon de mettre en œuvre ces opérations. J'utilise hashlib pour calculer les hachages, mais comme les hachages que je reçois sont des ficelles, comment calculer avec eux?Opérations sur les hachages Python
13
A
Répondre
23
Vous pouvez utiliser la méthode hexdigest()
pour obtenir des chiffres hexadécimaux, puis les convertir en nombre:
>>> h = hashlib.md5('data')
>>> int(h.hexdigest(), 16)
188041611063492600696317361555123480284L
Si vous avez déjà la sortie de digest()
, vous pouvez le convertir en chiffres hexadécimaux:
>>> hexDig = ''.join('%02x' % ord(x) for x in h.digest())
>>> int(hexDig, 16)
188041611063492600696317361555123480284L
Modifier:
Pour le second cas, il est réel facilement plus facile à convertir en utilisant .encode('hex')
ou binascii.hexlify
:
>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L