Ce qu'est un hash et à quoi il sert

Une fonction de hachage transforme des données de n'importe quelle longueur en une empreinte de longueur fixe : 128 bits pour MD5, 256 pour SHA-256. Il suffit de changer une seule lettre pour que l'empreinte change complètement, et il est impossible de remonter aux données depuis l'empreinte.

C'est pourquoi les hashs servent à vérifier qu'un téléchargement est intact, à identifier des données sans les conserver, à signer des documents et, avec des algorithmes lents et du sel, à stocker des mots de passe. Git nomme chaque version par un SHA-1 ; Bitcoin repose sur SHA-256.

MD5 et SHA-1 ne sont plus sûrs : on sait fabriquer exprès deux fichiers différents ayant la même empreinte. Ils restent utiles contre les erreurs de transmission, mais la sécurité exige SHA-256 ou mieux.

Erreurs fréquentes

  • Comparer un hash calculé sur un texte avec un saut de ligne ou une espace en trop : un caractère invisible change tout.
  • Stocker des mots de passe avec un simple MD5 ou SHA-256 : ils sont bien trop rapides à tester en masse. Il faut des algorithmes lents comme bcrypt ou Argon2.
  • Croire qu'un hash se déchiffre : ce n'est pas un chiffrement. Les sites qui 'inversent' des hashs les cherchent seulement dans des tables précalculées.

Questions fréquentes

Peut-on retrouver le texte à partir du hash ?

Non. Une bonne fonction de hachage ne s'inverse pas ; on peut seulement deviner le texte et comparer. C'est pourquoi les mots de passe courts ou courants sont quand même trouvés.

Comment vérifier un fichier téléchargé ?

Calcule le hash du fichier avec un outil du système (sha256sum sous Linux, Get-FileHash sous Windows) et compare-le à celui publié. Si un seul caractère diffère, le fichier est différent.

Pourquoi le même texte donne-t-il des hashs différents selon les programmes ?

En général à cause de l'encodage ou des fins de ligne : un texte enregistré en CRLF ou en Latin-1 a d'autres octets que le même texte en UTF-8 avec LF, donc un autre hash.

Comment fonctionne ce calcul

Le texte est d'abord converti en octets avec UTF-8. SHA-1, SHA-256, SHA-384 et SHA-512 sont calculés par l'API Web Crypto du navigateur, selon FIPS 180-4. MD5 suit la RFC 1321 : les données sont complétées jusqu'à un multiple de 512 bits avec leur longueur, puis chaque bloc passe par 64 étapes d'additions, de rotations et de fonctions logiques sur quatre mots de 32 bits.