Générer un hash
Le générateur de hash calcule MD5, SHA-1, SHA-256, SHA-384, SHA-512, CRC32 et HMAC dans votre navigateur. Chaque résultat indique le statut de sécurité de l’algorithme, car le fait le plus décisif à propos de MD5 et de SHA-1 est que tous deux sont cassés — et un outil qui les propose sans le dire fait partie du problème.
| Algorithme | État | Empreinte | Copier |
|---|---|---|---|
| MD5128 | non sûr | … | |
| SHA-1160 | non sûr | … | |
| SHA-256256 | actuel | … | |
| SHA-384384 | actuel | … | |
| SHA-512512 | actuel | … | |
| CRC3232 | somme de contrôle | … |
Comment fonctionne Générer un hash ?
Un hash associe à n’importe quelle entrée une valeur de longueur fixe, de sorte que trouver deux entrées de même sortie devrait être infaisable. Ce « devrait » porte tout le poids de la phrase, et savoir quels algorithmes y satisfont encore est la chose la plus utile que cette page puisse vous dire.
MD5 et SHA-1 sont cassés, et ce n’est pas théorique
On peut produire des collisions MD5 sur un ordinateur portable en quelques secondes, et elles ont réellement servi : le malware Flame a falsifié en 2012 un certificat de signature de code Microsoft à l’aide d’une collision MD5. SHA-1 est tombé en 2017 quand Google et CWI ont produit deux PDF de même empreinte, et le coût n’a fait que baisser depuis. Ni l’un ni l’autre n’est acceptable pour une signature, pour l’intégrité face à un adversaire, ou pour dédupliquer une entrée que vous ne contrôlez pas. Tous deux font très bien l’affaire comme sommes de contrôle hors sécurité, et tous deux sont encore partout, c’est pourquoi ils sont ici.
Un hash n’est pas un hash de mot de passe
SHA-256 est conçu pour être rapide — des milliards d’opérations par seconde sur un GPU — et la vitesse est précisément ce qu’il ne faut pas pour un mot de passe, où la défense consiste à être assez lent pour que deviner coûte plus cher que le mot de passe n’en vaut. Stocker le SHA-256 d’un mot de passe, salé ou non, signifie qu’un attaquant qui possède la base de données teste toute la liste des mots de passe courants en quelques minutes. Les bons outils sont bcrypt, scrypt et Argon2, qui ont tous un facteur de coût délibéré. Rien sur cette page n’est un hash de mot de passe.
HMAC n’est pas « hacher la clé et le message »
La construction évidente, H(key || message), est cassée pour tout hash de Merkle–Damgård — ce qui inclut MD5, SHA-1 et SHA-256. Un attaquant qui connaît l’empreinte et la longueur de la clé peut concaténer des données et calculer une empreinte valide pour le message étendu sans jamais voir la clé. C’est l’attaque par extension de longueur, et c’est la raison pour laquelle HMAC existe comme primitive distincte, avec ses deux hash imbriqués, interne et externe. SHA-384 et SHA-512/256 y sont immunisés par construction, parce qu’ils sont tronqués.
L’encodage de l’entrée change le hash
Le hachage est défini sur des octets, pas sur des caractères, si bien que l’empreinte de café dépend du fait que le caractère accentué soit représenté par les deux octets UTF-8 C3 A9 ou par le seul octet Latin-1 E9. Cette page utilise UTF-8 de bout en bout, comme le font tous les systèmes actuels. Une signature qui se vérifie en local et échoue en production, c’est très souvent exactement cela.
CRC32 n’est pas du tout un hash
C’est une somme de contrôle de détection d’erreurs, conçue pour les défauts de transmission, et construire une collision volontairement est trivial. Avec seulement 32 bits, elle entre aussi en collision par accident au bout d’environ 65 000 entrées, d’après la borne d’anniversaire. Juste pour repérer un téléchargement corrompu ; faux pour tout le reste.
Entrée
abc
Empreintes
MD5 900150983cd24fb0d6963f7d28e17f72 broken SHA-1 a9993e364706816aba3e25717850c26c9cd0d89d broken SHA-256 ba7816bf8f01cfea414140de5dae2223b0… current
Quelles options et quels cas limites Générer un hash prend en charge ?
| Paramètre | Type | Valeur par défaut | Comportement et cas limites |
|---|---|---|---|
| MD5 | 128 bits | cassé | Des collisions sont pratiques sur un ordinateur portable et ont été utilisées dans des attaques réelles. Correct comme somme de contrôle non sécurisée ; jamais pour des signatures, l’intégrité face à un adversaire, ou la déduplication d’entrées non fiables. |
| SHA-1 | 160 bits | cassé | SHAttered a produit une collision réelle en 2017 et le coût a diminué depuis. Les navigateurs et les autorités de certification l’ont abandonné. Git l’utilise toujours pour les noms d’objets, ce qui est une décision de compatibilité plutôt qu’une décision de sécurité. |
| SHA-256 | 256 bits | actuel | L’actuel défaut pour l’intégrité et les signatures. Aucune attaque pratique. Rapide par conception, ce qui en fait le mauvais choix pour le hachage d’un mot de passe. |
| SHA-384 | 384 bits | actuel | SHA-512 tronqué, ce qui le rend immunisé contre l’attaque d’extension de longueur qui affecte SHA-256. Choisie là où cette propriété est importante. |
| SHA-512 | 512 bits | actuel | Plus rapide que SHA-256 sur le matériel 64-bit, malgré une sortie plus grande. Vaut la peine d’être préféré là où la longueur supplémentaire n’est pas un coût. |
| CRC32 | 32 bits | somme de contrôle | Une somme de contrôle de détection d’erreurs, pas un hachage. Facile à falsifier délibérément et entre en collision par accident après environ 65 000 entrées. Correct pour attraper une transmission corrompue et faux pour tout le reste. |
| HMAC | à clé | famille SHA uniquement | Une construction à clé qui résiste à l’extension de longueur, contrairement au hachage d’une clé et d’un message ensemble. Offert pour les algorithmes SHA ; MD5 et CRC32 sont exclus car HMAC sur un hachage cassé est un MAC cassé. |
| Encodage d’entrée | UTF-8 | toujours | Le hachage est défini sur des octets. Un résumé du même texte diffère entre UTF-8 et Latin-1, ce qui est une cause récurrente de signatures qui vérifient localement et échouent en production. |
| Sortie | hex ou base64 | hex | Les mêmes octets dans deux rendus. Hex est ce que les outils en ligne de commande affichent ; base64 est ce que de nombreuses en-têtes HTTP transportent. |
Questions fréquentes
Puis-je m’en servir pour hacher des mots de passe ?
Non — et c’est la réponse la plus importante de la page. Chaque algorithme présent ici est conçu pour être rapide, et la vitesse est précisément ce que l’on ne veut pas pour un mot de passe : un attaquant qui possède votre base de données et un GPU teste des milliards de candidats par seconde. Utilisez bcrypt, scrypt ou Argon2, qui ont tous un facteur de coût réglable rendant chaque essai coûteux. Saler un SHA-256 aide contre les rainbow tables et ne sert à rien contre une machine de craquage moderne.
MD5 est-il vraiment cassé s’il est encore utilisé partout ?
Les deux sont vrais. Les collisions sont réalisables en pratique — vous pouvez produire deux fichiers de même MD5 sur un ordinateur portable — et des collisions MD5 ont servi dans une attaque réelle à falsifier un certificat de signature de code Microsoft. Il reste partout comme somme de contrôle hors sécurité, dans les ETags et les vérifications d’intégrité de fichiers contre la corruption accidentelle, et cet usage-là est correct. Ce qui ne l’est pas, c’est tout usage où un adversaire choisit l’entrée.
Pourquoi mon empreinte diffère-t-elle de celle d’un autre outil ?
C’est presque toujours l’entrée, pas l’algorithme. Vérifiez d’abord un retour à la ligne final — un fichier s’y termine, pas une zone de texte en général, et un seul octet change tout. Vérifiez ensuite l’encodage : cette page utilise UTF-8, et un outil configuré par défaut sur Latin-1 donnera une empreinte différente pour tout caractère non ASCII. Vérifiez enfin si l’autre outil a haché les octets du fichier ou sa représentation base64.
À quoi sert HMAC ?
À prouver qu’un message provient bien de quelqu’un qui détient un secret partagé et qu’il n’a pas été modifié. C’est ce qui signe une charge utile de webhook, une requête API et un cookie de session. Si c’est une primitive distincte et pas simplement un hachage de la clé avec le message, c’est à cause de l’extension de longueur : pour la plupart des hash, connaître H(key || message) permet à un attaquant de calculer une empreinte valide pour un message plus long, sans la clé. La construction imbriquée de HMAC l’empêche.
Quel SHA utiliser ?
SHA-256, sauf si vous avez une raison de faire autrement — c’est le défaut partout, il est bien analysé et assez rapide. SHA-512 est réellement plus rapide sur du matériel 64 bits malgré sa sortie plus longue. SHA-384 est un SHA-512 tronqué, ce qui le rend immunisé contre l’extension de longueur, et c’est le bon choix si vous construisez quelque chose qui hache directement un secret au lieu d’utiliser HMAC.
Mon entrée est-elle envoyée ?
Non. Le hachage SHA passe par le SubtleCrypto intégré au navigateur ; MD5 et CRC32 sont implémentés en JavaScript sur cette page, parce que SubtleCrypto refuse délibérément d’implémenter MD5. Rien ne quitte l’onglet, ce qui a son importance, car ce que les gens hachent est fréquemment des secrets API, des jetons et des contenus de fichiers.