Générateur et vérificateur bcrypt
Générez un hash bcrypt avec un coût de 4 à 14, vérifiez un mot de passe avec un hash existant et affichez sa version, son coût, son sel et son empreinte.
Hacher un mot de passe
- Version
- Coût
- Sel (22 caractères)
- Empreinte (31 caractères)
Vérifier un mot de passe avec un hash
- Version
- Coût
- Sel (22 caractères)
- Empreinte (31 caractères)
Comment hacher un mot de passe avec bcrypt
- Sous Hacher un mot de passe, saisissez le Mot de passe. Un compteur indique sa taille en octets UTF-8 et vous avertit au-delà de 72 octets.
- Choisissez le Facteur de coût (4 à 14). La ligne en dessous indique le nombre de tours, par exemple 10 → 2^10 = 1 024 tours.
- Cliquez sur Générer le hash. Une barre de progression suit le calcul, et la page reste utilisable pendant ce temps. À la fin, l’outil affiche la durée du calcul et le Hash bcrypt, prêt à copier.
- Le hash est découpé en ses éléments : Version, Coût, Sel (22 caractères) et Empreinte (31 caractères).
Pour vérifier un mot de passe avec un hash, saisissez le mot de passe, collez le hash (celui que vous venez de générer est repris automatiquement) et cliquez sur Vérifier le mot de passe. Le résultat indique s’ils correspondent. Cochez Masquer les mots de passe pour cacher les deux champs.
Le hachage s’effectue dans votre navigateur avec la bibliothèque bcryptjs, chargée seulement au premier besoin. Aucun mot de passe ni hash n’est envoyé.
Comment fonctionne bcrypt
bcrypt (Provos et Mazières, 1999) est une fonction de hachage de mots de passe fondée sur l’algorithme de chiffrement Blowfish. Contrairement à SHA-256, elle est volontairement lente, et cette lenteur se règle : le facteur de coût est une puissance de deux, chaque +1 double donc le travail. Un coût de 10 correspond à 1 024 itérations de la coûteuse préparation de clé ; un coût de 12, à 4 096. Cette lenteur passe inaperçue lors d’une connexion, mais elle rend l’attaque par force brute d’une base volée bien plus coûteuse.
Un hash comme $2b$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy se lit ainsi :
$2b$: la version.$2a$et$2y$(PHP) sont compatibles et peuvent être vérifiés ici ;$2x$désigne les hash d’une ancienne implémentation boguée et est refusé.10: le facteur de coût.- Les 22 caractères suivants : un sel aléatoire de 128 bits, dans l’alphabet Base64 propre à bcrypt (
./A-Za-z0-9). - Les 31 derniers caractères : l’empreinte de 184 bits.
Comme le sel est aléatoire et stocké dans le hash, hacher deux fois le même mot de passe donne deux hash différents, tous deux valides. C’est aussi pourquoi on vérifie un mot de passe avec une fonction de vérification au lieu de comparer des hash.
Choisir le coût
Retenez le coût le plus élevé que votre serveur peut supporter tout en gardant des connexions rapides, en général autour d’un quart de seconde par hash. L’OWASP recommande un coût minimum de 10 pour bcrypt. Dans un navigateur, bcrypt tourne en JavaScript, plusieurs fois plus lentement qu’une implémentation native côté serveur : à partir d’un coût de 12, l’outil prévient que le calcul peut prendre une à plusieurs secondes, et chaque cran supplémentaire double la durée. Le travail est découpé en tranches courtes pour que la page ne se fige pas.
Pour un nouveau système, l’OWASP privilégie désormais Argon2id, bcrypt restant acceptable lorsqu’Argon2id n’est pas disponible.
La limite des 72 octets
bcrypt n’utilise que les 72 premiers octets du mot de passe ; la suite est ignorée sans avertissement. Un octet n’est pas un caractère : une lettre accentuée occupe 2 octets en UTF-8 et un emoji 4. Deux longs mots de passe qui partagent leurs 72 premiers octets produisent le même hash. Le compteur d’octets vous alerte quand un mot de passe est trop long. Certains systèmes pré-hachent les longs mots de passe (par exemple avec HMAC-SHA256, puis Base64) avant bcrypt ; dans ce cas, ne transmettez jamais d’empreinte binaire brute, car un octet nul interromprait le mot de passe dans de nombreuses implémentations.
Questions fréquentes
Pourquoi le même mot de passe donne-t-il un hash différent à chaque fois ?
Chaque hash reçoit un nouveau sel aléatoire, stocké dans le hash lui-même. Le bouton Vérifier le mot de passe lit le sel et le coût dans le hash et refait le calcul : chaque version est donc validée.
Peut-on déchiffrer un hash bcrypt ?
Non. bcrypt est une fonction à sens unique. La seule façon de retrouver un mot de passe est de le deviner et de hacher chaque essai, ce que le facteur de coût rend justement lent.
Quel facteur de coût choisir ?
Au moins 10, et davantage si votre serveur reste assez rapide. Mesurez sur votre matériel de production : la durée affichée ici reflète le JavaScript de votre navigateur, généralement plus lent qu’un serveur.
Les hash $2a$, $2b$ et $2y$ sont-ils interchangeables ?
Pour les mots de passe de moins de 256 octets, ils donnent le même résultat, et cet outil vérifie les trois. $2b$ a corrigé un bogue de dépassement de longueur dans l’implémentation d’OpenBSD, et $2y$ est le nom donné par PHP à une implémentation correcte.
Puis-je saisir un vrai mot de passe ici ?
Tout se passe localement, rien n’est envoyé ni enregistré. Pour de vrais comptes, mieux vaut malgré tout tester avec un mot de passe d’exemple plutôt qu’avec un mot de passe que vous utilisez.
Outils similaires
- Générateur de hash Calculez le hash MD5, SHA-1, SHA-256 ou SHA-512 d'un texte ou d'un fichier de toute taille et vérifiez une somme de contrôle, sans rien envoyer.
- Générateur de mot de passe Générateur de mot de passe gratuit : créez des mots de passe forts de 4 à 128 caractères dans votre navigateur. Rien n'est enregistré ni envoyé.
- Tester la robustesse d'un mot de passe Testez la force de votre mot de passe : note, temps estimé pour le craquer selon quatre scénarios d’attaque et conseils, le tout analysé dans votre navigateur.
- Générateur HMAC Calculez un HMAC-SHA1, SHA-256, SHA-384 ou SHA-512 avec une clé texte, hex ou Base64, en hex et Base64, et vérifiez une signature de webhook dans le navigateur.