Générateur de hachage

Générez les empreintes MD5 et SHA de n’importe quel texte et comparez-les à une somme de contrôle attendue.

Entrée
MD5Cassé
SHA-1Cassé
SHA-256
SHA-384
SHA-512

Ce que fait réellement une fonction de hachage

Une fonction de hachage cryptographique prend une entrée de taille quelconque et produit une chaîne d’octets de longueur fixe — une empreinte, ou « hash ». Donnez-lui une seule lettre ou un roman entier : MD5 renvoie toujours 16 octets et SHA-256 toujours 32. La même entrée produit toujours la même empreinte, et changer un seul bit n’importe où dans l’entrée change environ la moitié des bits de sortie — c’est pourquoi deux fichiers presque identiques ont des empreintes totalement sans rapport.

La propriété cruciale est que la fonction ne va que dans un sens. Calculer l’empreinte d’un fichier est rapide ; retrouver le fichier à partir de l’empreinte n’est pas seulement lent, c’est impossible par principe, car une sortie de longueur fixe ne peut pas encoder une entrée illimitée. Une empreinte est une trace, pas une copie chiffrée — il n’y a rien à déchiffrer.

À quoi servent réellement les empreintes

  • Vérifier un téléchargement : un projet publie le SHA-256 d’une version, vous hachez le fichier reçu, et des empreintes identiques signifient que les octets sont arrivés intacts.
  • Détecter un changement : les systèmes de gestion de versions, de sauvegarde et de déduplication comparent des empreintes plutôt que des fichiers entiers, car comparer 32 octets coûte bien moins que comparer des gigaoctets.
  • Subresource Integrity : une page épingle l’empreinte en Base64 d’un script chargé depuis un CDN, et le navigateur refuse de l’exécuter en cas de non-correspondance.
  • Stocker des mots de passe — mais avec une fonction lente conçue pour cela, jamais avec un simple hachage. Voir plus bas.

Remarquez le point commun : l’empreinte est un substitut compact de quelque chose de plus gros, servant à répondre à « est-ce bien la même chose que ce que j’attendais ? » sans transmettre ni stocker la chose elle-même.

MD5 et SHA-1 sont cassés — ce que cela veut dire en pratique

Une fonction de hachage est considérée comme cassée dès que l’on sait construire une collision : deux entrées différentes produisant la même empreinte. Les collisions MD5 se calculent sur du matériel ordinaire depuis 2004, et en 2017 l’attaque SHAttered a produit deux fichiers PDF différents partageant une empreinte SHA-1 identique. C’est pour cela que les deux algorithmes sont signalés dans cet outil.

La conséquence pratique est plus étroite que « ne les utilisez jamais ». Une collision signifie qu’un attaquant contrôlant les deux fichiers peut faire correspondre l’empreinte d’un fichier malveillant à celle d’un fichier anodin : MD5 et SHA-1 ne peuvent donc plus prouver qu’un fichier n’a pas été falsifié par quelqu’un d’hostile. Ils restent parfaitement utilisables pour détecter une corruption accidentelle — un téléchargement tronqué, un bit retourné sur un disque — et vous continuerez à les croiser dans des systèmes hérités, des en-têtes ETag et de vieux manifestes de paquets que personne ne réécrira.

La règle empirique : si la question est « est-ce que cela a été abîmé en route ? », MD5 suffit. Si la question est « est-ce que quelqu’un l’a remplacé exprès ? », utilisez SHA-256 ou mieux.

Ne hachez jamais un mot de passe avec ceux-ci

MD5, SHA-1 et même SHA-256 sont conçus pour être rapides, et la rapidité est exactement la mauvaise propriété pour stocker des mots de passe. Un GPU moderne calcule des milliards d’empreintes SHA-256 par seconde : une base de données volée de mots de passe simplement hachés peut donc être attaquée à très grande échelle — et comme un même mot de passe produit toujours la même empreinte, les tables précalculées rendent l’attaque encore moins chère.

Le stockage des mots de passe exige une fonction délibérément lente, salée et gourmande en mémoire : Argon2id, scrypt ou bcrypt. Elles ajoutent un sel aléatoire unique par mot de passe, si bien que deux mots de passe identiques ne partagent pas d’empreinte, et leur coût est réglable, si bien que chaque tentative coûte à l’attaquant du temps et de la mémoire réels. Cet outil sert aux sommes de contrôle et aux empreintes, pas au stockage de mots de passe.

Lire et comparer des empreintes

Une même empreinte peut s’écrire de plusieurs façons. L’hexadécimal en minuscules est ce qu’impriment les outils standard en ligne de commande, et c’est généralement ce à quoi vous comparerez :

md5sum file.iso                  # Linux
sha256sum file.iso               # Linux
shasum -a 256 file.iso           # macOS
Get-FileHash file.iso -Algorithm SHA256   # PowerShell (affiche en majuscules)
certutil -hashfile file.iso SHA256        # Windows (affiche en majuscules)

En hexadécimal, la casse ne veut rien dire : PowerShell et certutil affichent en majuscules, les outils Unix en minuscules, et c’est exactement la même valeur. C’est pourquoi la zone de comparaison de cet outil ignore la casse en hexadécimal. Pour le Base64, c’est différent : c’est un encodage plus dense des mêmes octets, utilisé par Subresource Integrity et diverses API, et là la casse est significative — la comparaison y est donc exacte.

Une dernière habitude à prendre : ne comparez jamais deux longues empreintes à l’œil pour décider si elles correspondent. L’œil humain est très doué pour voir ce qu’il s’attend à voir, et le fait que les premiers et derniers caractères concordent ne prouve rien. Collez la valeur attendue et laissez la comparaison être exacte.

Questions fréquentes

Mon texte est-il envoyé à un serveur ?
Non. Chaque empreinte est calculée dans votre navigateur — la famille SHA via l’API Web Crypto et MD5 via du JavaScript exécuté sur votre propre machine. Rien de ce que vous saisissez ne quitte votre appareil.
Peut-on inverser une empreinte pour retrouver le texte d’origine ?
Non. Une empreinte est une trace de longueur fixe, pas une copie chiffrée, et l’original ne peut pas en être extrait. Les sites qui annoncent du « déchiffrement MD5 » se contentent de chercher votre empreinte dans une table d’entrées courantes déjà calculées, ce qui ne marche que pour du texte court ou prévisible.
Pourquoi MD5 et SHA-1 portent-ils un avertissement ici ?
Parce que les collisions sont réalisables pour les deux : on peut construire deux entrées différentes partageant une empreinte. Cela les rend impropres à prouver qu’un fichier n’a pas été falsifié volontairement, même s’ils restent utiles pour détecter une corruption accidentelle.
Quel algorithme utiliser ?
SHA-256 est le choix par défaut raisonnable et ce que publient aujourd’hui la plupart des projets. SHA-512 n’est pas véritablement plus sûr pour cet usage, mais il est plus rapide sur du matériel 64 bits. N’utilisez MD5 ou SHA-1 que lorsqu’un élément hors de votre contrôle les impose déjà.
Puis-je hacher un mot de passe avec cet outil ?
Vous le pouvez, mais vous ne devriez pas en stocker le résultat. Le stockage des mots de passe exige une fonction lente et salée comme Argon2id, scrypt ou bcrypt — les hachages rapides comme ceux-ci sont précisément ce qui rend les bases volées faciles à casser.
Pourquoi les empreintes changent-elles quand j’ajoute une espace ou un saut de ligne ?
Parce que les espaces font partie de l’entrée. Un saut de ligne final est la raison la plus fréquente pour laquelle une empreinte ne correspond pas à ce que vous attendiez — un texte copié depuis un terminal ou un éditeur en traîne souvent un, invisible.
Gère-t-il correctement l’hébreu, l’arabe et les emoji ?
Oui. Le texte est encodé en octets UTF-8 avant hachage, ce qui est la norme qu’emploient tous les autres outils : hacher « שלום » ou un emoji ici donne donc la même empreinte que md5sum ou sha256sum sur un fichier UTF-8 contenant les mêmes caractères.
Pourquoi hache-t-il du texte mais pas des fichiers ?
L’API Web Crypto ne propose pas de hachage en flux : un fichier doit donc être entièrement chargé en mémoire avant d’être haché, et le MD5 écrit à la main serait nettement lent sur un gros fichier. Hacher du texte couvre honnêtement le cas courant, plutôt que de proposer un hachage de fichiers qui fige la page.