Skip to content

Comparison

SHA-256 vs MD5 : n'utilisez jamais MD5 pour la sécurité

L'un est mort pour la sécurité. L'autre est le défaut moderne. Ne les confondez pas.

By Published

En bref.MD5 est cryptographiquement cassé depuis 2004 — des collisions peuvent être trouvées en moins d’une heure sur un ordinateur portable — donc ne l’utilisez jamais pour la sécurité. SHA-256 n’a aucune collision pratique connue et est le défaut moderne pour TLS, JWT, Bitcoin, Git (nouveaux dépôts) et HMAC. Les deux conviennent pour les sommes de contrôle non adversariales, mais SHA-256 n’est pas significativement plus lent sur les CPU modernes.

MD5 et SHA-256 sont tous deux des fonctions de hachage cryptographique — elles prennent une entrée de n’importe quelle longueur et produisent une sortie de longueur fixe (128 bits pour MD5, 256 bits pour SHA-256). Les deux sont déterministes, les deux sont rapides, et ils semblent superficiellement interchangeables. Ils ne le sont pas. MD5 est cryptographiquement cassé depuis 2004. SHA-256 est correct.

Les points essentiels

PropriétéMD5SHA-256
Taille de sortie128 bits (32 caractères hex)256 bits (64 caractères hex)
Publié19912001 (NIST FIPS 180-2)
Collision trouvée2004 (Wang et al.)Pas encore (2026)
Collisions à préfixe choisiPratiques depuis 2007Aucune connue
Utilisé pour TLS, JWT, crypto ?NonOui

Pourquoi MD5 est cassé

Une fonction de hachage cryptographique doit rendre computationnellement infaisable de trouver deux entrées différentes qui produisent la même sortie (une “collision”). En 2004, Xiaoyun Wang et son équipe ont publié une méthode pour trouver des collisions MD5 en environ une heure sur un ordinateur personnel.

Les choses ont empiré. En 2007, une attaque à collision à préfixe choisi a émergé — étant donné deux en-têtes de fichier arbitraires, un attaquant pouvait ajouter des octets soigneusement forgés pour faire entrer en collision les deux fichiers sous MD5. Cela a été utilisé en 2008 pour forger une signature d’autorité de certification malveillante en utilisant un cluster de PlayStation 3 à 657 $.

Pour les usages sécuritaires, MD5 est mort. Quiconque utilise MD5 pour la vérification de signatures, l’intégrité du contenu ou le hachage de mots de passe utilise de la cryptographie cassée.

Où MD5 est encore acceptable

MD5 n’est pas cassé en tout ; il est cassé pour les usages cryptographiques. Deux catégories où il est encore acceptable :

  • Sommes de contrôle non adversariales.Vérifier qu’un téléchargement n’a pas été corrompu, ou qu’une entrée de cache correspond à une clé. Il n’y a pas d’attaquant ; vous avez juste besoin d’une empreinte rapide et déterministe. MD5 convient.
  • Déduplication.Détecter que deux fichiers sont identiques, quand forger une collision n’aiderait aucun attaquant plausible (système de stockage, cache de build).

Même dans ces cas, SHA-256 est rarement significativement plus lent sur du matériel moderne — les CPU Intel et AMD ont tous deux des instructions SHA natives. Il n’y a aucune vraie raison d’utiliser MD5 par défaut.

Où SHA-256 est le bon choix

  • Handshakes TLS et signatures de certificats. SHA-256 est la norme moderne.
  • Signatures JWT (HS256, RS256, ES256). Le 256 désigne SHA-256.
  • Hashes de blocs Bitcoin. Bitcoin utilise SHA-256 deux fois dans sa preuve de travail.
  • Hashes d’objets Git. Git migre de SHA-1 (qui a aussi été cassé) vers SHA-256 ; les nouveaux dépôts devraient utiliser SHA-256 dès le départ.
  • Authentification de messages basée sur HMAC. HMAC-SHA256 est la norme.

Qu’en est-il de SHA-1 ?

SHA-1 (160 bits) se situe entre MD5 et SHA-256 sur la chronologie. Des collisions théoriques ont été prédites en 2005 ; la première collision pratique (SHAttered) a été publiée en 2017 par Google. SHA-1 est déprécié pour les usages sécuritaires, bien que Git l’utilise encore (avec une détection extensive de collisions en couche par- dessus) jusqu’à ce que la migration vers SHA-256 soit terminée.

Qu’en est-il de MD5 pour les mots de passe ?

Non. N’utilisez pas non plus SHA-256 directement. Le hachage de mots de passe nécessite une fonction lente et nécessitant de la mémoire — bcrypt, scrypt ou argon2. SHA-256 brut est trop rapide : un attaquant avec des GPU modernes peut calculer ~10 milliards de SHA-256 par seconde, forçant brute les mots de passe faibles en quelques minutes. Les fonctions de hachage lentes rendent cette attaque économiquement infaisable.

La règle pragmatique

Si vous hachez pour une raison quelconque touchant la sécurité — authentification, vérification de signature, intégrité du contenu qu’un attaquant pourrait vouloir tromper — utilisez SHA-256 ou plus fort.

Si vous hachez pour une empreinte non adversariale — déduplication, stockage adressable par contenu où vous contrôlez toutes les entrées — MD5 est techniquement acceptable, mais SHA-256 n’est pas plus lent sur le matériel moderne, donc utilisez-le par défaut de toute façon. Le coût d’une erreur d’appréciation sur la catégorie est élevé ; le coût d’utiliser toujours SHA-256 est essentiellement nul.

Utilisez notre générateur de hash pour l’un ou l’autre via Web Crypto — bien que nous ne proposions pas MD5 dans l’interface, car le navigateur ne le fournit pas nativement et nous préférons ne pas encourager son utilisation.

Chiffres clés

  • Longueur de sortie : MD5 = 128 bits / 32 caractères hex ; SHA-256 = 256 bits / 64 caractères hex — exactement 2× les bits.
  • Résistance aux collisions : MD5 ~2¹⁸ aujourd’hui (littéralement des secondes sur un ordinateur portable) ; SHA-256 ~2¹²⁸ — un rapport de 2¹¹⁰×.
  • Débit sur AMD Zen 4 avec SHA-NI : MD5 ~700 Mo/s ; SHA-256 ~1,9 Go/s. Avec accélération matérielle SHA-256 est maintenant ~2,5× plus rapide que MD5 — l’argument de vitesse pour MD5 s’est inversé.
  • Sans accélération : MD5 ~500 Mo/s, SHA-256 ~250 Mo/s — l’écart historique de 2×.
  • Attaque Wang (2004) : première collision MD5 pratique trouvée en ~1 heure sur un PC. Les attaques modernes (HashClash) trouvent des collisions en moins de 30 secondes sur des GPU courants.
  • Exploit CA malveillant 2008 : Sotirov et al. ont forgé un certificat signé par CA en utilisant 200 consoles PlayStation 3 (~657 $ de calcul) et une collision MD5 à préfixe choisi.
  • Taux de force brute GPU (RTX 4090) : ~50 milliards de MD5/s, ~9 milliards de SHA-256/s — les deux anéantissent les hashes de mots de passe non salés en quelques minutes.
  • Coût par défaut d’Argon2id (OWASP 2024) : 19 Mio de mémoire, 2 itérations, 1 parallélisme — ~50 ms par hash vs nanosecondes pour SHA-256 brut.

Matrice de décision

Cas d’usageHash
Signature de certificat TLSSHA-256+
Signature JWTSHA-256 (HS256/RS256/ES256)
Signature de code / binaireSHA-256
Preuve de travail Bitcoin / blockchainSHA-256 (double)
Signature de requête API HMACHMAC-SHA-256
ETag S3 (upload en partie unique)MD5 — verrouillé par contrat AWS
Fichier md5sums de paquets LinuxMD5 — hérité, mais les nouvelles distros ajoutent SHA-256
Déduplication interne, entrées de confianceL’un ou l’autre ; SHA-256 par défaut sur les CPU modernes
Hachage de mot de passeargon2id / bcrypt / scrypt — ni l’un ni l’autre brut

Sources

Frequently asked questions

MD5 est-il sécurisé pour le hachage de mots de passe ?
Non, et même SHA-256 n’est pas le bon choix pour les mots de passe. Les deux sont trop rapides — un attaquant avec des GPU modernes peut calculer ~10 milliards de SHA-256 par seconde, forçant brute les mots de passe faibles en quelques minutes. Utilisez bcrypt, scrypt ou argon2 ; ils sont délibérément lents et nécessitent de la mémoire.
Quand MD5 est-il encore acceptable ?
Uniquement pour l’empreinte non adversariale où aucun attaquant ne profite d’une collision : vérification d’intégrité de fichiers sur des téléchargements de confiance, dérivation de clé de cache, déduplication dans un système que vous contrôlez de bout en bout. Partout où la sécurité dépend du hash, utilisez SHA-256 ou plus fort.
SHA-256 est-il réversible ?
Non — les fonctions de hachage cryptographique sont unidirectionnelles par conception. Vous ne pouvez pas dériver l’entrée depuis la sortie. La ‘réversion’ par tables arc-en-ciel ne fonctionne que pour les entrées qui ont déjà été hachées, et le salage déjoue entièrement les tables arc-en-ciel.
Pourquoi MD5 est-il encore partout s’il est cassé ?
Compatibilité ascendante et inertie. L’en-tête Content-MD5, les gestionnaires de paquets Linux, l’ETag S3 pour les téléchargements non multiparts, et d’innombrables outils internes émettent encore MD5 car le coût de modification du protocole dépasse le coût du risque résiduel. Les nouveaux systèmes devraient utiliser SHA-256 par défaut.

Related

Published May 14, 2026