Hachage de mot de passe : MD5, bcrypt, Argon2 expliqués
MD5 est cassé, SHA-256 est trop rapide, bcrypt vieillit, Argon2id gagne. Tour d'horizon des algorithmes de hachage pour mots de passe en 2026.
Stocker un mot de passe en clair est une faute professionnelle. Le bon réflexe : le hacher avec un algorithme lent et salé. Tous les algorithmes ne se valent pas — voici l'état de l'art 2026.
Hash ≠ chiffrement
Un hash est une fonction à sens unique : on peut calculer hash(motdepasse) mais pas l'inverse. Un chiffrement est réversible avec une clé. Pour stocker un mot de passe utilisateur, on veut un hash : si la base est volée, l'attaquant ne récupère pas les mots de passe en clair.
Pourquoi MD5 et SHA-256 nus ne suffisent pas
MD5 et SHA-256 ont été conçus pour la vérification d'intégrité (un fichier n'a pas été altéré) — ils doivent être rapides. C'est exactement ce qu'il ne faut pas pour les mots de passe : un attaquant peut tester 22 milliards de SHA-256 par seconde sur une RTX 4090.
Conséquence : un mot de passe de 8 caractères haché en SHA-256 tombe en 12 jours. La même attaque sur bcrypt prend plusieurs siècles.
Les 4 familles d'algorithmes pour mots de passe
1. PBKDF2 (2000)
Recommandé par le NIST. Itère un hash classique (HMAC-SHA-256) des milliers de fois. Avantages : standard, disponible partout. Inconvénient : peu coûteux en mémoire, donc parallélisable sur GPU.
Verdict : acceptable si bien paramétré (≥ 600 000 itérations en 2026), mais dépassé par bcrypt et Argon2.
2. bcrypt (1999)
Conçu par Niels Provos et David Mazières pour OpenBSD. Lent par design grâce à un paramètre cost factor (chaque incrément double le temps). En 2026, on recommande cost = 12 (≈250 ms par hash).
Format de sortie : $2b$12$<salt 22 chars><hash 31 chars> (60 caractères total).
Verdict : excellent, encore très utilisé. Limitation : 72 caractères en entrée, et résiste moins bien aux ASIC qu'Argon2.
3. scrypt (2009)
Coûteux en mémoire (paramètre N) en plus du temps CPU. Bloque les attaques ASIC qui se compensaient par parallélisation massive.
Verdict : très bon, mais Argon2 fait mieux avec une meilleure ergonomie.
4. Argon2 (2015, lauréat PHC)
Vainqueur du Password Hashing Competition en 2015. Trois variantes :
- Argon2d — résiste au GPU, sensible aux side-channels.
- Argon2i — résiste aux side-channels, plus faible vs GPU.
- Argon2id — hybride, recommandé OWASP 2026.
Paramètres recommandés OWASP : m=65536 (64 Mo), t=3, p=4.
Verdict : standard moderne. Choix par défaut pour tout nouveau projet.
Tableau récapitulatif
| Algorithme | Année | Résistance GPU | Résistance ASIC | Recommandation 2026 |
|---|---|---|---|---|
| MD5 | 1991 | ❌ | ❌ | Interdit |
| SHA-256 nu | 2001 | ❌ | ❌ | Interdit pour mots de passe |
| PBKDF2 | 2000 | Moyenne | Faible | Acceptable (legacy) |
| bcrypt | 1999 | Bonne | Moyenne | OK pour existant |
| scrypt | 2009 | Très bonne | Bonne | Bon |
| Argon2id | 2015 | Excellente | Excellente | Choix par défaut |
Le rôle du salt
Tous ces algorithmes intègrent un salt aléatoire ajouté au mot de passe avant hachage. Le salt empêche :
- Les rainbow tables (tables précalculées de hashes courants).
- De détecter que deux utilisateurs ont le même mot de passe (leurs hashes seraient identiques sans salt).
Un salt doit faire au moins 16 octets aléatoires. Voir notre article dédié : Qu'est-ce qu'un salt en cryptographie ?
Recommandation finale 2026
- Nouveau projet : Argon2id (paramètres OWASP).
- Existant en bcrypt : garder, mais augmenter le cost factor à 12 minimum.
- Existant en MD5 ou SHA-256 : migration urgente. Voir Comment stocker un mot de passe en base de données.