2009-06-27 22 views
5

Y a-t-il une chance qu'un hachage SHA-1 soit purement numérique ou l'algorithme garantit-il qu'il doit y avoir au moins un caractère alphabétique?Un hachage SHA-1 peut-il être purement numérique?

Editer: Je le représente en base 16, sous la forme d'une chaîne renvoyée par la fonction sha1() de PHP.

Répondre

15

techniquement, un hachage SHA1 est un nombre, il est le plus souvent codé en base 16 (ce que fait sha1() de PHP) de sorte qu'il y a presque toujours une lettre. Il n'y a aucune garantie de cela cependant.

Les chances d'un hexagone 160 codés nombre de bits ayant aucun chiffre AF sont (10/16) ou d'environ 6,84227766 × 10 -9

+0

Merci! Précisément ce que je voulais savoir. :) –

+1

En termes plus acceptables: Environ 1 sur 146 000 000 SHA1 exprimés en hexadécimal n'ont pas de chiffres supérieurs à 9. –

+8

Par exemple, hashlib.sha1 ('169977707'). Hexdigest() == '5938266572196464632409940308852871296620' –

1

On peut représenter la sortie de SHA1 (comme toute données binaires) dans n'importe quelle base que vous voulez. Plus précisément, vous pouvez encoder le résultat en base-8/10.

3

Le hachage SHA-1 est un nombre de 160 bits. Pour la facilité de l'écrire, il est normalement écrit en hexadécimal. Les chiffres hexadécimaux (base 16) sont 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, a, b, c, d, e et f. Il n'y a rien de spécial à propos des lettres. Chaque caractère hexadécimal équivalent à 4 bits, ce qui signifie que le hachage peut être écrit en 40 caractères.

Je ne crois pas qu'il y ait une raison pour laquelle un hachage SHA-1 ne peut pas avoir de lettres, mais c'est improbable. C'est comme générer un nombre aléatoire de 40 chiffres (base 10) et ne pas avoir de 7, 8 ou 9.