J'ai lu quelques docs sur md5, il a dit que ses 128 bits, mais pourquoi est-il 32 caractères? Je ne peux pas calculer les personnages.
MODIFIER:
SHA-1 produit 160 bits, combien y a-t-il de caractères?
Représentation hexadécimale à 32 caractères, soit 2 caractères par octet.
Je voulais résumer certaines des réponses en un seul post.
Tout d'abord, ne considérez pas le hachage MD5 comme une chaîne de caractères, mais comme un nombre hexadécimal. Par conséquent, chaque chiffre est un chiffre hexadécimal (0-15 ou 0-F) et représente quatre bits et non huit.
En prenant cela plus loin, un octet ou huit bits sont représentés par deux chiffres hexadécimaux, par ex. b '1111 1111
'= 0xFF
= 255
.
Les hachages MD5 ont une longueur de 128 bits et sont généralement représentés par 32 chiffres hexadécimaux.
Les hachages SHA-1 ont une longueur de 160 bits et sont généralement représentés par 40 chiffres hexadécimaux.
Pour la famille SHA-2, je pense que la longueur de hachage peut faire partie d'un ensemble prédéterminé. Ainsi, SHA-512 peut être représenté par 128 chiffres hexadécimaux.
Encore une fois, ce post est juste basé sur les réponses précédentes.
Pour être clair sur les bits vs octet, vs caractères.
2**8
Combinaisons possibles: 256 combinaisonsQuand vous regardez un caractère hexagonal ,
[0-9] + [a-f]
: La gamme complète de 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
2**4
: Cela signifie qu'un caractère hexadécimal peut stocker 4 bits dans un octet (un demi-octet).2**8
.[0-9a-f][0-9a-f]
Et représente les deux moitiés d'un octet (nous appelons un demi-octet un petit morcea ).Lorsque vous regardez un caractère normal à un octet, (nous allons totalement ignorer les caractères multi-octets et les caractères larges ici)
2**8
.md5()
pouvait stocker tout cela, vous verriez toutes les lettres minuscules, toutes les lettres majuscules, toutes les signes de ponctuation et des choses comme ¡°ÀÐàð
, Comme des espaces , et les onglets), et les caractères de contrôle (que vous ne pouvez même pas voir et dont beaucoup ne sont pas utilisés).Donc, ils sont clairement différents et j'espère que cela fournit la meilleure décomposition des différences.
MD5 génère des chiffres hexadécimaux (0-15/0-F), ils ont donc quatre bits chacun. 128/4 = 32 caractères.
SHA-1 génère également des chiffres hexadécimaux (0-15/0-F), donc 160/4 = 40 caractères.
(S'agissant d'opérations mathématiques, la sortie de la plupart des fonctions de hachage est généralement représentée par des chiffres hexadécimaux.)
Vous pensiez probablement à ASCII caractères de texte, qui sont 8 bits.
C'est 32 caractères hexadécimaux - 1 caractère hexadécimal correspond à 4 bits.
Ce sont des chiffres hexadécimaux, pas des caractères. Un chiffre = 4 bits.
Ce ne sont pas des caractères, ce sont des chiffres hexadécimaux.