Ce qu’est un hash MD5
Le MD5 est une fonction de hachage. Elle prend n’importe quelle saisie, d’une lettre à un gros fichier, et produit une empreinte de taille fixe de 128 bits, écrite en général sous forme de 32 caractères hexadécimaux. La même saisie donne toujours le même hash. Un changement minime, même d’un seul caractère, donne un hash complètement différent.
Ron Rivest a publié le MD5 en 1992. Il reste courant pour les sommes de contrôle des pages de téléchargement, la détection de fichiers en double, les clés de cache et la détection rapide de changements. Il n’est plus considéré comme sûr, ce que cette page explique plus bas.
Comment utiliser le générateur MD5
Hacher un texte. Sous Hacher un, laissez Texte sélectionné et tapez ou collez dans la zone. Les hash se mettent à jour pendant la frappe. Le texte est haché en UTF-8, exactement tel que saisi, espaces et sauts de ligne compris.
Hacher un fichier. Appuyez sur Fichier et choisissez un fichier de 500 Mo maximum. Le fichier est lu sur votre appareil. Son nom et sa taille en octets s’affichent quand les hash sont prêts.
Lire les résultats. Le panneau Hash affiche quatre résultats :
- MD5, mis en avant, 32 caractères hexa
- SHA-1, 40 caractères
- SHA-256, 64 caractères
- SHA-512, 128 caractères
Chacun a son propre bouton Copier. Appuyez sur Majuscules si vous avez besoin de lettres capitales.
Comparer avec un hash connu. Collez dans ce champ une somme de contrôle tirée d’une page de téléchargement. L’outil la compare aux quatre résultats et vous dit lequel correspond. Si rien ne correspond, il se sert de la longueur de votre hash pour indiquer à quel algorithme il ressemble.
Comment fonctionne le MD5
Le MD5 complète la saisie jusqu’à un multiple de 512 bits et la traite par blocs. Chaque bloc passe par 64 tours de mélange de bits qui combinent additions, rotations et opérations logiques. L’état final de quatre mots de 32 bits forme le hash. Comme le mélange est très poussé, le résultat paraît aléatoire et change complètement dès qu’un bit de la saisie change. C’est ce qu’on appelle l’effet avalanche.
Exemples
| Saisie | MD5 |
|---|---|
| (vide) | d41d8cd98f00b204e9800998ecf8427e |
abc |
900150983cd24fb0d6963f7d28e17f72 |
hello |
5d41402abc4b2a76b9719d911017c592 |
Hello |
8b1a9953c4611296a827abf8c47804d7 |
Hello, World! |
65a8e27d8879283831b664bd8b7f0ad4 |
The quick brown fox jumps over the lazy dog |
9e107d9d372bb6826bd81d3542a419d6 |
The quick brown fox jumps over the lazy dog. |
e4d909c290d0fb1ca068ffaddf22cbd0 |
bonjour |
f02368945726d5fc2a14eb576f7276c0 |
Bonjour |
ebc58ab2cb4848d04ec23d83f7ddf985 |
Les deux phrases anglaises ne diffèrent que d’un point, et pourtant leurs hash n’ont rien en commun. Même chose pour « bonjour » et « Bonjour », qui ne diffèrent que par une majuscule.
La même saisie, abc, avec les autres algorithmes :
| Algorithme | Hash de abc |
|---|---|
| SHA-1 | a9993e364706816aba3e25717850c26c9cd0d89d |
| SHA-256 | ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad |
Les accents et l’encodage
Comme le texte est haché en UTF-8, une lettre accentuée compte pour deux octets. Le MD5 de café vaut ici 07117fe4a1ebd544965dc19573183da2. Un vieux logiciel qui enregistrerait le même mot en Latin-1 (ISO-8859-1), où é n’occupe qu’un octet, obtiendrait 961f50f6282239d09e48f812c1ca7276. Si le MD5 d’un texte français ne correspond pas à celui d’un autre système, vérifiez d’abord l’encodage.
Sécurité : ce pour quoi le MD5 convient, ou non
Convient : vérifier qu’un fichier est arrivé sans corruption, trouver des fichiers en double, construire des clés de cache, et les identifiants sans enjeu de sécurité.
Ne convient pas : les mots de passe, les signatures numériques, les certificats, ou prouver qu’un fichier n’a pas été modifié par quelqu’un qui cherche à vous tromper. Des attaques par collision pratiques contre le MD5 sont publiques depuis 2004. Un attaquant peut fabriquer deux fichiers différents ayant le même MD5.
Les mots de passe demandent un hash lent. Même le SHA-256 est trop rapide pour des mots de passe. Utilisez bcrypt, scrypt ou Argon2, conçus pour ralentir les tentatives. Un hash MD5 simple de mot de passe comme 5f4dcc3b5aa765d61d8327deb882cf99 (le mot « password ») est reconnu immédiatement par n’importe quel site de recherche.
Autres façons d’obtenir un hash MD5
Linux. md5sum file.zip affiche le hash et le nom du fichier. echo -n hello | md5sum hache un texte. Sans -n, le saut de ligne est haché aussi.
macOS. md5 file.zip, ou md5 -s hello pour un texte.
Windows. certutil -hashfile file.zip MD5 dans l’invite de commandes, ou Get-FileHash file.zip -Algorithm MD5 dans PowerShell.
Python. hashlib.md5(b'hello').hexdigest() renvoie 5d41402abc4b2a76b9719d911017c592.
Node.js. require('crypto').createHash('md5').update('hello').digest('hex') donne la même valeur.
Outils associés
Besoin d’un mot de passe plutôt que d’un hash ? Utilisez le générateur de mot de passe. Pour des identifiants uniques, le générateur d’UUID convient mieux que le hachage de données aléatoires. Pour encoder des données binaires en texte, voyez l’outil pour encoder et décoder en Base64.