Une histoire de hash Hash
Un hash (qui peut également être appelé un condensat ou une signature) est une valeur calculée à partir d’une autre valeur. Dans la grande majorité des cas, cette valeur est représentée sous forme d’une chaîne de caractères hexadécimaux. Le calcul du hash fait appel à un algorithme complexe que ce livre ne détaillera pas.
Voici deux exemples de hash calculés avec l’algorithme SHA-1 :
Valeur |
Hash |
Git |
5819778898df55e3a762f0c5728b457970d72cae |
git |
46f1a0bd5592a2f9244ca321b129902a06b53e03 |
Je veux une phrase assez longue, au moins plus que le hash en tous cas |
7a5a57cde20a9bbda76b70e9223292ce7f8472f9 |
Dans cet exemple, nous remarquons deux choses :
-
Un changement mineur dans le contenu change totalement le hash. Nous remarquons cela en comparant les hash de « Git » et « git ».
-
Un hash fait toujours la même taille : 40 caractères (ce qui équivaut à 160 bits).
Il est impossible de retrouver le contenu original à partir du hash. Au mieux on peut essayer de le deviner, mais on ne peut avoir aucune certitude étant donné qu’un même hash peut correspondre à différentes chaînes. En effet, si on calcule le hash de 2160+1 chaînes différentes, on a forcément au moins une chaîne qui partage le hash d’une autre (voir la section Risque de collision).
Les hashs sont souvent utilisés pour vérifier...