2010-10-25 7 views
2

En python, comment diviser un hachage SHA256 en un préfixe 32 bits? Je travaille avec l'API de Safebrowsing de Google, qui nécessite que je compare les préfixes 32 bits entre ma propre collection et la collection que l'API m'envoie. Je comprends comment tirer la liste de Google, et je comprends comment former une collection de hachages à partir d'URL analysées, cependant, je ne comprends pas comment je dois dériver les premiers 32 bits de chaque hachage.diviser un hachage de 256 bits en un préfixe de 32 bits en python

Et après avoir obtenu le préfixe, est-ce que le meilleur moyen d'action entre les placer dans un dictionnaire avec les paires clé/valeur correspondantes est le préfixe/hachage complet, de sorte que je puisse les référencer plus tard?

Répondre

3

32 bits sont les 4 premiers octets. Vous pouvez donc découper le tableau d'octets.

hash_obj.digest()[:4] 

Vous pouvez prendre cela et l'utiliser comme une clé de dictionnaire.

EDIT

Je ne suis pas sûr si vous avez besoin de la représentation hexagonale, ce serait.

hash_obj.hexdigest()[:8] 
+0

fonctionne comme un charme, merci. est la tranche indiciant le nombre de bits ou d'octets? comment puis-je faire la différence? IE pourquoi est hex: 8? – Stev0

+0

@ Stev0, avec du texte ASCII, il faut 1 octet (8 bits) pour stocker un caractère, donc prendre les 4 premiers caractères vous donne 32 bits (4 * 8). J'utilise librement le terme caractère, selon la version python, il peut s'agir d'un tableau d'octets. En notation hexadécimale, chaque caractère représente 4 bits, donc pour représenter un octet, vous avez besoin de 2 caractères, donc vous avez besoin des 8 premiers caractères. Juste pour être clair, la version hexadécimale est une représentation conviviale des 32 premiers bits, la forme non hexadécimale est la première 32 bits. http://en.wikipedia.org/wiki/Hexadecimal – mikerobi

Questions connexes