Comment générer des hash MD5, SHA-256 et autres

· 9 min de lecture

Le hachage convertit n'importe quelle entrée (un mot de passe, un fichier, un message) en une chaîne de caractères de longueur fixe. La même entrée produit toujours le même hash, mais même un changement minuscule dans l'entrée produit un hash complètement différent. Cela rend le hachage essentiel pour la vérification d'intégrité, le stockage de mots de passe, les signatures numériques, les preuves blockchain, et des dizaines d'autres briques de l'informatique moderne. Choisir le bon algorithme, savoir pourquoi certains sont cassés, et reconnaître les schémas qui détournent les hachages transforment un outil de cinq secondes en une fondation sur laquelle vous pouvez bâtir en sécurité.

Une brève histoire des fonctions de hachage

Le hachage comme idée de programmation précède la cryptographie de plusieurs décennies, les tables de hachage en structures de données utilisent des fonctions simples comme CRC et FNV pour répartir les clés dans les buckets. Les hachages cryptographiques, conçus pour être irréversibles et résistants aux collisions, sont apparus à la fin des années 1980 avec MD4 (1990) puis MD5 (1991) de Ron Rivest. MD5 est devenu le standard de fait pendant deux décennies avant que des collisions pratiques le rendent dangereux pour les usages de sécurité.

Le SHA-0 (1993) du NIST a été retiré presque immédiatement et remplacé par SHA-1 (1995). SHA-1 a mieux tenu mais est tombé par étapes : attaques théoriques en 2005, scénario pratique de falsification de certificat en 2009, et la démonstration SHAttered de Google montrant deux PDF différents avec le même hash SHA-1 en 2017. La famille SHA-2 (SHA-224, SHA-256, SHA-384, SHA-512), publiée en 2001, a été conçue comme remplaçante à plus long terme et reste sûre aujourd'hui. SHA-3 (Keccak, standardisé en 2015) est un design structurellement différent destiné à fournir une porte de sortie si SHA-2 tombait.

En parallèle, les hachages spécifiques aux mots de passe ont évolué séparément. Le simple MD5 ou SHA-1 s'est avéré trop rapide pour le stockage de mots de passe, alors bcrypt (1999), scrypt (2009) et Argon2 (2015, vainqueur de la Password Hashing Competition) ont ajouté une lenteur délibérée et une difficulté mémoire pour rendre les attaques par force brute des ordres de grandeur plus coûteuses. Le bon hash pour un mot de passe n'est jamais le même que le bon hash pour une somme de contrôle de fichier.

Comment fonctionne le hachage

Une fonction de hachage prend une entrée de n'importe quelle taille et produit une sortie de taille fixe :

EntréeHash SHA-256 (16 premiers car.)
hello2cf24dba5fb0a30e...
Hello185f8db32271fe25...
hello!ce06092fb948d9ff...

Notez que changer un seul caractère (h minuscule en H majuscule) ou ajouter un caractère change complètement le hash. C'est ce qu'on appelle l'effet d'avalanche et c'est ce qui rend les hachages utiles pour repérer tout changement, aussi minuscule soit-il.

En interne, une fonction de hachage moderne divise son entrée en blocs de taille fixe (64 octets pour SHA-256, 128 pour SHA-512), fait passer chaque bloc dans une fonction de compression, et chaîne l'état vers l'avant. La sortie est l'état final après que le dernier bloc a été mélangé. Comme la chaîne dépend de chaque octet, aucun raccourci ne permet à un attaquant de modifier l'entrée sans réécrire tout le hash.

Un bon hash cryptographique a trois propriétés de sécurité : résistance à la pré-image (vous ne pouvez pas trouver une entrée qui produit un hash donné), résistance à la seconde pré-image (étant donné une entrée, vous ne pouvez pas trouver une entrée différente avec le même hash) et résistance aux collisions (vous ne pouvez pas trouver deux entrées distinctes avec le même hash). MD5 échoue aux trois ; SHA-1 échoue à la résistance aux collisions ; SHA-2 et SHA-3 tiennent encore les trois.

Algorithmes de hachage courants

AlgorithmeBits de sortieLongueurStatutÀ utiliser pour
MD512832 hexCassé (non sûr)Sommes de contrôle héritées, usages non sécurité
SHA-116040 hexCassé (non sûr)Systèmes hérités uniquement
SHA-22422456 hexSûr (de niche)Préférer SHA-256
SHA-25625664 hexSûrIntégrité de fichier, signatures numériques
SHA-38438496 hexSûrSuites de chiffrement TLS 1.3
SHA-512512128 hexSûrApplications haute sécurité, perf 64 bits
SHA3-25625664 hexSûrAlternative à l'épreuve du futur de SHA-256
BLAKE2b / BLAKE3256 ou 512variableSûr, très rapidersync, restic, hachage en masse
HMAC-SHA25625664 hexSûrSignature de requête API
bcrypt18460 car. (personnalisés)Sûr pour mots de passeStockage de mots de passe
Argon2idconfigurablevariableLe meilleur pour mots de passeStockage moderne de mots de passe
CRC32328 hexDétection d'erreur seulementPas un hash de sécurité

SHA-256 est le standard actuel pour la plupart des usages généraux. MD5 et SHA-1 ne devraient être utilisés que pour interagir avec des systèmes hérités qui les exigent ; jamais pour des frontières de sécurité. Pour les mots de passe, utilisez bcrypt ou Argon2id, pas du SHA-256 brut.

Comment générer un hash

  1. Choisissez votre algorithme : sélectionnez MD5, SHA-1, SHA-256, SHA-384 ou SHA-512 dans le menu déroulant. Utilisez SHA-256 sauf raison particulière d'en choisir un autre.
  2. Entrez du texte ou téléversez un fichier : tapez ou collez du texte dans la zone d'entrée, ou déposez un fichier. L'outil exécute le hachage entièrement dans votre navigateur en utilisant l'API Web Crypto.
  3. Copiez le hash : le résultat est une chaîne hexadécimale que vous pouvez utiliser pour vérification, stockage, ou comparaison. Beaucoup d'outils proposent aussi un encodage base64 pour un stockage compact.
  4. Comparez si besoin : collez le hash publié à côté du hash généré et laissez l'outil signaler le premier caractère différent. La comparaison visuelle de chaînes de 64 caractères est sujette à erreur.

Usages pratiques

Vérification d'intégrité de fichier : téléchargez un fichier et comparez son hash au hash officiel de l'éditeur. S'ils correspondent, le fichier est authentique et non corrompu. C'est le cas d'usage qui motive la plupart des générations de hash quotidiennes, le flux derrière chaque invocation de sha256sum sous Linux et chaque page de checksums sur un téléchargement de logiciel.

Stockage de mots de passe, les applications stockent des hashes de mots de passe, pas les mots de passe eux-mêmes. Quand vous vous connectez, votre saisie est hachée et comparée au hash stocké. Le détail crucial est que l'algorithme doit être lent à dessein (bcrypt, Argon2) pour qu'un attaquant qui vole le fichier de hashes ne puisse pas le brute-forcer en un temps raisonnable.

Déduplication de données : les systèmes de stockage et outils de sauvegarde hachent des morceaux de données, souvent des blocs de quelques mégaoctets, et utilisent le hash comme clé. Deux morceaux avec le même hash sont supposés identiques, donc la seconde occurrence ne stocke qu'un pointeur. Des outils comme restic, borg et beaucoup de services de sauvegarde cloud en dépendent.

Signatures numériques : une signature numérique est un hash qui a été chiffré avec une clé privée. Le vérificateur hache le document, déchiffre la signature avec la clé publique, et vérifie que les deux correspondent. Cela prouve à la fois que le document n'a pas changé et que le signataire a approuvé cette version exacte.

HMAC pour la sécurité d'API : HMAC combine une fonction de hachage avec une clé secrète, produisant une étiquette que toute personne ayant la même clé peut vérifier. Les webhooks, la signature de requêtes AWS et beaucoup de RPC internes utilisent HMAC-SHA256 pour que le récepteur sache que la requête vient vraiment d'une source de confiance.

Blockchain et arbres de Merkle : les cryptomonnaies, le stockage adressable par contenu (IPFS) et Git utilisent tous des arbres de hachage pour s'engager sur de grands ensembles de données avec un seul hash racine. Changez un octet n'importe où dans l'arbre, et le hash racine change, c'est la propriété qui rend les données infalsifiables.

Clés de cache : les systèmes de cache hachent les URL de requête ou paramètres pour produire une clé de lookup compacte. CRC et SipHash sont courants ici car ils privilégient la vitesse aux garanties cryptographiques.

Hash vs HMAC vs signature numérique

Ces trois concepts sont souvent confondus car ils produisent tous des chaînes hexadécimales d'apparence similaire.

ConceptEntréesVérifieUsage courant
HashDonnéesLes données n'ont pas changé depuis le calcul du hashSommes de contrôle, adressage par contenu
HMACDonnées + secret partagéDonnées inchangées ET créées par quelqu'un avec le secretSignature de requête API, webhooks
Signature numériqueDonnées + clé privéeDonnées inchangées ET signées par une clé spécifiqueCertificats TLS, signature de logiciel
ChiffrementDonnées + clé (n'importe laquelle)Les données ont été gardées secrètes en transitConfidentialité (pas intégrité seule)

Un hash brut ne prouve rien sur qui l'a créé. HMAC prouve que l'expéditeur avait le secret partagé. Une signature identifie en plus le signataire sans avoir besoin de partager le secret. Choisissez l'outil le plus faible qui résout votre vrai problème.

Pièges courants

Outils et bibliothèques alternatifs

Le générateur de hash navigateur est le chemin le plus rapide pour des hashes ponctuels. Pour une utilisation répétée ou des scripts, les outils en ligne de commande et bibliothèques de langage prennent le relais.

OutilPlateformeForceÀ surveiller
Générateur de hash webNavigateurInstantané, sans installation, sans uploadUne entrée à la fois
sha256sum, md5sumLinuxScriptable, GNU coreutils--check lit les fichiers SHA256SUMS
shasum -a 256macOS, BSDInclus dans l'OSNom de binaire différent de Linux
Get-FileHashWindows PowerShellDe première classe sous WindowsFormat de sortie différent de sha256sum
openssl dgst -sha256MultiplateformeSi vous avez déjà OpenSSLPlus lent que les outils dédiés
b3sum / BLAKE3 CLIMultiplateformeDébit multi-GB/sPlus récent, moins omniprésent
Python hashlibPythonIntégré, tous les algorithmes majeursRestez aux entrées en octets
Node cryptoNode.jsIntégré, API similaire à PythonStreaming pour gros fichiers
Web Crypto subtle.digestJS navigateurNatif, rapide, sans dépendanceAPI asynchrone uniquement
HashiCorp Vault / KMSCloudGestion centralisée de clés pour HMAC et signatureVerrouillage fournisseur

Pour les mots de passe, traitez l'écosystème de langage différemment : utilisez bcrypt, argon2-cffi, passlib, ou l'adaptateur recommandé de votre plateforme, jamais une boucle SHA artisanale.

Vie privée et le générateur de hash

Le générateur de hash tourne entièrement dans votre navigateur. Le texte que vous tapez est haché en mémoire avec l'interface SubtleCrypto de Web Crypto, et tout fichier que vous sélectionnez est diffusé via l'API FileReader sans téléversement. Il n'y a aucun journal des entrées hachées, aucune analytique sur les algorithmes populaires, et aucun moyen pour quiconque de reconstruire ce que vous vérifiiez. Les hashes eux-mêmes résument souvent du matériel sensible, mots de passe, documents internes, clés privées, exactement le genre de données que vous ne devriez jamais coller dans un formulaire web inconnu. Faire le travail côté client garde l'entrée sur votre machine, là où elle doit être. Pour une tâche aussi routinière que générer une somme de contrôle, le réglage de vie privée par défaut devrait être : rien ne quitte la page, rien n'est stocké, rien n'est partagé.

Questions fréquentes

Quelle est la différence entre MD5, SHA-1 et SHA-256 ?

MD5 produit un hash de 128 bits (32 caractères hex), SHA-1 produit 160 bits (40 caractères) et SHA-256 produit 256 bits (64 caractères). MD5 et SHA-1 sont considérés comme cryptographiquement cassés. SHA-256 est actuellement sûr et recommandé pour la vérification d'intégrité et la sécurité.

Peut-on inverser un hash pour retrouver la donnée d'origine ?

Non. Les fonctions de hash sont à sens unique par conception. Vous ne pouvez pas inverser mathématiquement un hash vers son entrée. En revanche, les mots de passe courants peuvent être retrouvés dans des tables précalculées (rainbow tables), d'où l'importance de saler les mots de passe avant hashage.

Qu'est-ce que HMAC ?

HMAC (Hash-based Message Authentication Code) combine une fonction de hash avec une clé secrète. Il vérifie à la fois l'intégrité et l'authenticité des données, prouvant qu'elles n'ont pas été altérées et qu'elles ont été produites par quelqu'un connaissant la clé secrète.

Mes données sont-elles envoyées sur un serveur ?

Non. Tout le hashage tourne dans votre navigateur avec l'API Web Crypto. Vos textes et fichiers ne quittent jamais votre appareil.

Why should I never use MD5 or SHA-1 for password storage even with a salt?

Both algorithms are extremely fast, which is the opposite of what you want for passwords. An attacker with a stolen hash file can try billions of guesses per second on a GPU. Password-hashing functions like bcrypt, scrypt, and Argon2 are deliberately slow and memory-hard, which forces attackers to spend orders of magnitude more time per guess.

When should I use SHA-512 instead of SHA-256?

On 64-bit CPUs, SHA-512 is often slightly faster than SHA-256 because its inner state and word size are tuned to 64-bit operations. Use SHA-512 when you want a longer digest (128 hex characters) for collision resistance margin, or when you are already in a SHA-512 ecosystem (TLS 1.3 with certain cipher suites, some HMAC implementations).