Question

J'ai un problème assez étrange. Pour une table de hachage distribuée Tableau I besoin d'être en mesure de faire des opérations mathématiques simples sur hash MD5. Ceux-ci comprennent 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 est. J'utilise hashlib pour les calculer, mais étant donné que les hash que je reçois sont alors chaîne, comment puis-je calculer avec eux?

Était-ce utile?

La solution

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 effectivement plus facile à convertir à l'aide .encode('hex') ou binascii.hexlify:

>>> int(h.digest().encode('hex'), 16)
188041611063492600696317361555123480284L
>>> int(binascii.hexlify(h.digest()), 16)
188041611063492600696317361555123480284L
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top