Guide
Le hachage cryptographique expliqué : MD5, SHA-1, SHA-256, SHA-512
Trois propriétés, quatre algorithmes à connaître, et une erreur — utiliser SHA-256 pour les mots de passe — qui est à l’origine de la moitié des rapports de violation de données.
By Buğra SözeriPublished
Un hachage cryptographique est une fonction qui transforme une entrée arbitraire en une empreinte de taille fixe. Le mot “cryptographique” fait un vrai travail dans cette phrase : toutes les fonctions de hachage ne se qualifient pas, et utiliser une fonction non cryptographique (ou la mauvaise fonction cryptographique) est la façon dont les systèmes deviennent silencieusement non sécurisés.
Ce qu’est un hachage cryptographique
Formellement, une fonction de hachage Hprend une chaîne d’octets arbitraire et renvoie une sortie de longueur fixe appelée le condensé. SHA-256 renvoie 256 bits, SHA-512 renvoie 512, MD5 renvoie 128. La même entrée produit toujours la même sortie ; la même sortie ne révèle rien sur l’entrée.
N’importe qui peut vérifier un hachage ; seule une copie de l’entrée originale peut en produire un. Cette asymétrie est ce qui rend les hachages utiles pour les vérifications d’intégrité, la déduplication, l’adressage de contenu, les signatures numériques, et (avec des mises en garde) le stockage des mots de passe.
Les trois propriétés qui comptent
1. Résistance à la préimage
Étant donné un condensé d, il doit être computationnellement infaisable de trouver n’importe quelle entrée mtelle que H(m) = d. C’est ce qui fait des hachages une fonction à sens unique. Pour un hachage de 256 bits, le coût par force brute est d’environ 2^256 opérations.
2. Résistance à la seconde préimage
Étant donné une entrée spécifique m1, il doit être infaisable de trouver une entrée différente m2 telle queH(m1) = H(m2). C’est la propriété qui protège l’intégrité.
3. Résistance aux collisions
Il doit être infaisable de trouver n’importe quellesdeux entrées distinctes m1 != m2 avecH(m1) = H(m2). Par le paradoxe des anniversaires, trouver une collision générique dans un hachage de N bits coûte environ2^(N/2) opérations, pas 2^N. C’est pourquoi la sortie de 160 bits de SHA-1 n’est plus suffisante.
L’effet avalanche
Un changement d’un bit dans l’entrée doit produire un condensé radicalement différent, avec environ la moitié des bits de sortie inversés. C’est ce qui rend les hachages utiles pour les différences — vous ne pouvez pas dire si deux entrées étaient “presque identiques” à partir de leurs condensés.
Les algorithmes obsolètes — et pourquoi
MD5 (1992)
Sortie de 128 bits. Les collisions ont été publiées pour la première fois en 2004 par Xiaoyun Wang ; en 2008 des chercheurs ont utilisé des collisions MD5 pour forger une autorité de certification malveillante. Aujourd’hui vous pouvez trouver une collision MD5 sur un ordinateur portable en quelques minutes. MD5 est mort pour tout usage de sécurité.
MD5 est encore acceptable comme somme de contrôle non cryptographiquepour la corruption accidentelle, mais ne le qualifiez jamais de “sécurisé” dans une spécification.
SHA-1 (1995)
Sortie de 160 bits. L’attaque SHAttered de 2017 de Google et CWI a produit deux PDF distincts avec le même hachage SHA-1 à un coût d’environ 2^63opérations. Le NIST a formellement déprécié SHA-1 pour les signatures numériques en 2011. Tous les principaux navigateurs ont cessé de faire confiance aux certificats TLS SHA-1 d’ici 2017.
La famille SHA-2
SHA-2 est une famille de hachages conçue par la NSA et publiée par le NIST en 2001 : SHA-224, SHA-256, SHA-384, SHA-512, plus les variantes tronquées SHA-512/224 et SHA-512/256.
- SHA-256 est la valeur par défaut pratique en 2026. Condensés de 256 bits, sécurité de collision de 128 bits, accélération matérielle sur chaque CPU moderne.
- SHA-512 est plus rapide sur les machines 64 bits et produit un condensé plus long. Utilisez-le quand vous voulez une marge plus grande que 128 bits de sécurité de collision.
- SHA-224 et SHA-384 existent pour la compatibilité legacy. Les nouvelles conceptions doivent utiliser les formes non tronquées par défaut.
Vous pouvez vérifier n’importe lequel de ces algorithmes en quelques secondes dans notre générateur de hachage dans le navigateur — il fonctionne localement avec l’API Web Crypto, donc rien ne quitte l’appareil.
SHA-3 et quand il importe
Le NIST a organisé une compétition ouverte de 2007 à 2012 pour sélectionner une sauvegarde structurelle pour SHA-2. Le gagnant était Keccak, standardisé comme SHA-3 en 2015. SHA-3 utilise une construction fondamentalement différente (la fonction éponge) donc une hypothétique rupture de la structure Merkle-Damgård de SHA-2 ne casserait pas SHA-3.
SHA-3 est généralement plus lent que SHA-2 en logiciel mais comparable ou plus rapide en matériel. C’est le bon choix quand vous voulez spécifiquement une diversité algorithmique. Pour tout le reste, SHA-256 reste la valeur par défaut pratique.
Pourquoi vous n’utilisez pas SHA-256 pour les mots de passe
C’est l’erreur la plus courante dans tout ce sujet. SHA-256 est rapide — un GPU moderne peut calculer des milliards par seconde. Pour un attaquant qui a volé votre base de données de mots de passe, cette vitesse est exactement la mauvaise propriété.
Les fonctions de hachage de mots de passe sont conçues pour êtredélibérément lentes et gourmandes en mémoire. Les trois noms à connaître en 2026 :
- bcrypt(1999). Facteur de travail réglable. Encore sécurisé ; la limite est sa cap d’entrée de 72 octets. Choix par défaut lors de l’intégration avec les bibliothèques existantes.
- scrypt (2009). Gourmand en mémoire, plus difficile à accélérer avec des ASICs que bcrypt.
- Argon2 (gagnant PHC 2015). La recommandation actuelle. Argon2id est la variante à utiliser — elle est résistante aux attaques par canal latéral et par GPU. Spécifié dans
RFC 9106.
HMAC : hachage avec une clé
Un hachage répond à la question “ces données sont-elles inchangées ?”. Un HMAC répond à “ces données sont-elles inchangées etquelqu’un qui connaît le secret partagé a-t-il produit ce MAC ?”.
HMAC est construit sur n’importe quel hachage cryptographique — HMAC-SHA-256 est le plus courant — via une construction spécifique définie dans RFC 2104. L’alternative naïve, H(clé || message), est vulnérable aux attaques par extension de longueur sur les hachages Merkle-Damgård (dont SHA-256). La construction imbriquée de HMAC empêche cela. Utilisez toujours HMAC, pas la forme naïve.
Cas d’utilisation réels
Vérification d’intégrité
Publiez le SHA-256 d’un téléchargement à côté du fichier. N’importe qui peut hacher sa copie et comparer. C’est ainsi que chaque distribution Linux distribue les ISOs et que les gestionnaires de paquets vérifient les dépendances.
Adressage de contenu
Git, IPFS, les couches Docker et de nombreux autres systèmes adressent les objets par leur hachage. Le hachage est le nom. Cela donne une déduplication gratuite et une intégrité gratuite.
Signatures numériques
Signer directement un fichier de plusieurs mégaoctets avec une clé RSA ou ECDSA serait lent. Le schéma standard consiste à hacher le fichier et à signer le hachage. La sécurité de la signature hérite de la résistance aux collisions du hachage — c’est pourquoi les signatures SHA-1 ne sont plus fiables.
Référence rapide
| Algorithme | Bits de sortie | Statut 2026 | Utiliser pour |
|---|---|---|---|
| MD5 | 128 | Cassé | Sommes de contrôle non-adversariales uniquement |
| SHA-1 | 160 | Déprécié | Compatibilité legacy uniquement |
| SHA-256 | 256 | Sécurisé | Valeur par défaut à usage général |
| SHA-512 | 512 | Sécurisé | Quand vous voulez une marge supplémentaire |
| SHA-3-256 | 256 | Sécurisé | Diversité structurelle, accélération matérielle |
| bcrypt / Argon2 | variable | Sécurisé | Stockage des mots de passe |
| HMAC-SHA-256 | 256 | Sécurisé | Intégrité de message authentifiée |
La conclusion honnête
Pour le hachage à usage général en 2026, utilisez SHA-256. Pour les mots de passe, utilisez Argon2id. Pour les tokens d’authentification, utilisez HMAC-SHA-256 (ou une bibliothèque JWTappropriée qui en utilise un en coulisse). Pour l’intégrité des téléchargements, publiez des condensés SHA-256 via HTTPS.
Les mauvaises réponses — MD5 où la sécurité compte, SHA-1 pour les nouvelles signatures, SHA-256 pour les mots de passe — sont les erreurs les plus courantes dans les rapports de violation. Bien choisir consiste principalement à savoir à quelle question chaque algorithme est conçu pour répondre.
Frequently asked questions
- SHA-256 est-il déjà cassé ?
- Non. À la date de 2026, il n’existe aucune attaque par collision ou préimage publiée sur SHA-256 qui soit meilleure que la force brute. Les meilleurs résultats cryptanalytiques connus n’affectent que les variantes à rondes réduites. Le NIST continue de recommander SHA-256 pour le hachage à usage général et les signatures numériques.
- Pourquoi ne pas simplement utiliser SHA-256 pour hacher les mots de passe ?
- Parce que SHA-256 est conçu pour être rapide — des milliards de hachages par seconde sur un GPU moderne. C’est exactement la mauvaise propriété pour le stockage des mots de passe, où vous voulez que les attaquants passent des secondes par tentative, pas des nanosecondes. Utilisez bcrypt, scrypt ou Argon2 — ces fonctions sont délibérément lentes, gourmandes en mémoire, et ont un facteur de travail réglable.
- SHA-3 est-il plus rapide que SHA-2 ?
- Généralement plus lent sur les CPU, plus rapide en matériel. SHA-3 (Keccak) a été sélectionné comme sauvegarde structurelle pour SHA-2, pas comme remplacement — sa construction en éponge est mathématiquement distincte, donc une hypothétique rupture de SHA-2 ne s’appliquerait pas à SHA-3. Pour les logiciels en 2026, SHA-256 reste la valeur par défaut pratique.
- Quelle est la différence entre un hachage et un HMAC ?
- Un hachage simple prend des données en entrée et renvoie un condensé. Un HMAC prend des données plus une clé secrète et renvoie un condensé qui ne peut être reproduit que par quelqu’un qui connaît la clé. Vous utilisez les hachages simples pour l’intégrité (ce fichier correspond-il à la somme de contrôle publiée ?) et les HMAC pour l’authenticité. Préfixer naïvement une clé aux données et hacher n’est pas la même chose que HMAC et présente des faiblesses connues.
- Combien de temps faut-il réellement pour trouver une collision SHA-256 ?
- Par le paradoxe des anniversaires, trouver une collision dans une sortie de 256 bits nécessite environ 2^128 opérations de hachage. À un billion (10^12) de hachages par seconde sur un million de machines, cela représente encore environ 10^19 années — bien plus longtemps que l’âge de l’univers. SHA-1 en revanche a une sortie de 160 bits et l’attaque SHAttered de Google en 2017 a démontré une collision en environ 2^63 opérations.
- Pourquoi git utilise-t-il encore SHA-1 ?
- Principalement par inertie plus des atténuations. Le stockage adressable par contenu de git ne dépend pas de la résistance aux collisions contre un adversaire contrôlant les deux entrées — il dépend de la résistance à la seconde préimage, qui est encore forte pour SHA-1. Le git moderne implémente également la détection SHAttered. La transition vers SHA-256 est en cours mais lente ; les nouveaux dépôts peuvent opter avec git init --object-format=sha256.
Related
Published May 31, 2026