Générateur bcrypt — hacher et vérifier des mots de passe avec bcrypt
Hachez un mot de passe avec bcrypt au coût de votre choix, vérifiez un mot de passe par rapport à un hash bcrypt et découvrez la signification de chaque partie du hash.
Générer un hash bcrypt
Vérifier un mot de passe avec un hash
| Version | $2b$ | 2b — correctif OpenBSD de 2014 pour les mots de passe de plus de 255 octets. Version par défaut actuelle de bcrypt (C/Python/Node). |
|---|---|---|
| Coût | 10 | 2^10 = 1 024 tours d’expansion de clé |
| Sel | O.0JDwgDTALNNPsTWXP1YO | 22 caract. = 128 bits aléatoires, Base64 bcrypt |
| Hash | 2o9FuEFCZZMBsOKg910t7.RrUqVQsmW | 31 caract. = 184 bits de la sortie de 192 bits |
Les mots de passe sont hachés et vérifiés dans votre navigateur avec bcryptjs. Rien n’est envoyé, stocké ni journalisé. Évitez tout de même de coller un mot de passe de production réel dans une page web. Parcourir tous les outils gratuits.
Un problème, ou quelque chose à améliorer ? Nous lisons chaque message et corrigeons vite.
Ce générateur bcrypt hache un mot de passe avec bcrypt à un facteur de coût de 4 à 15, vérifie un mot de passe par rapport à un hash bcrypt existant et décompose un hash en version, coût, sel et empreinte. Il est utile pour créer un utilisateur de test, vérifier lors d’une migration qu’un hash de votre base de données correspond à un mot de passe connu, ou comprendre ce que $2b$12$ signifie vraiment. Le hachage s’exécute dans votre navigateur avec bcryptjs, une implémentation JavaScript compatible avec les bibliothèques bcrypt utilisées par Node.js, PHP, Python, Ruby et Go. Pour créer plusieurs comptes de test, le mode lot hache une liste de 50 mots de passe maximum en une seule fois.
Bcrypt est lent par conception, et chaque cran de coût supplémentaire double le temps. L’outil affiche la progression pendant le calcul et estime la durée des autres facteurs de coût sur votre appareil, pour que vous voyiez le compromis avant d’en choisir un pour un serveur. Une mise en garde valable pour tout outil en ligne : ne collez pas un vrai mot de passe de production dans une page web que vous ne contrôlez pas. Utilisez cet outil pour des valeurs de test et pour comprendre les hashs.
Mode d’emploi
- Saisissez un mot de passe et choisissez un facteur de coût ; 10 à 12 est la valeur typique pour les systèmes de connexion.
- Appuyez sur Générer le hash. Une barre de progression s’affiche pendant le calcul ; au coût 14 ou 15, cela peut prendre plusieurs secondes.
- Copiez le hash de 60 caractères. Une nouvelle génération donne un hash différent, car le sel est aléatoire ; les deux sont valides à la vérification.
- Pour vérifier un hash, collez-le dans la section de vérification avec le mot de passe à tester et appuyez sur Vérifier.
- Consultez le tableau d’anatomie du hash pour voir la version et le coût utilisés.
Questions fréquentes
Puis-je hacher plusieurs mots de passe à la fois avec bcrypt ?
Oui. Passez à « Liste de mots de passe (lot) », collez jusqu’à 50 mots de passe, un par ligne (les espaces comptent ; les lignes vides sont ignorées), et appuyez sur Hacher. Ils sont hachés l’un après l’autre au coût choisi, chacun avec son propre sel aléatoire, et la page reste réactive pendant le calcul. Copiez les hashs dans le même ordre que votre liste ou téléchargez un CSV, avec ou sans les mots de passe en clair. La limite existe parce que bcrypt est volontairement lent : 50 hashs au coût 12 prennent déjà un moment.
Quel facteur de coût choisir pour bcrypt ?
Choisissez le coût le plus élevé qui maintient le calcul d’un hash à un délai acceptable sur votre serveur de production, typiquement de 100 ms à 1 seconde. Sur le matériel serveur actuel, cela donne généralement 10 à 12. L’OWASP Password Storage Cheat Sheet fixe un facteur de travail minimal de 10. Mesurez sur le vrai serveur plutôt que sur un portable, et n’oubliez pas qu’un coût élevé rend aussi votre point de connexion plus facile à surcharger de requêtes.
Pourquoi le même mot de passe donne-t-il un hash bcrypt différent à chaque fois ?
Chaque hash inclut un nouveau sel aléatoire de 128 bits, stocké dans le hash lui-même (les 22 caractères qui suivent le coût). C’est voulu : deux utilisateurs ayant le même mot de passe obtiennent des hashs différents, et les tables précalculées ne servent à rien. Pour vérifier un mot de passe, bcrypt lit le sel et le coût dans le hash stocké, hache à nouveau le candidat avec ces valeurs et compare.
Peut-on déchiffrer un hash bcrypt ?
Non. Bcrypt est un hachage à sens unique, pas un chiffrement. Le seul moyen de retrouver un mot de passe à partir d’un hash bcrypt est de deviner des candidats et de hacher chacun d’eux, et le facteur de coût rend chaque tentative coûteuse. C’est tout son intérêt : un mot de passe faible peut toujours être deviné, mais chaque tentative prend un vrai temps de CPU au lieu de quelques nanosecondes.
Quelle est la différence entre $2a$, $2b$ et $2y$ ?
Ils marquent des révisions de l’implémentation de l’algorithme. $2a$ a longtemps été la version de référence ; $2b$ a été introduit par OpenBSD en 2014 pour corriger le traitement des mots de passe de plus de 255 octets ; $2y$ est le marqueur de PHP pour les hashs produits après la correction d’un bug d’extension de signe en 2011. Pour les hashs créés par les bibliothèques actuelles, la vérification est identique, et la plupart des bibliothèques acceptent les trois.
Y a-t-il une longueur maximale de mot de passe pour bcrypt ?
Oui. Bcrypt n’utilise que les 72 premiers octets du mot de passe et ignore le reste, et le compte se fait en octets UTF-8 : un mot de passe composé de lettres accentuées ou d’emoji atteint donc la limite avec moins de caractères. Cet outil vous avertit quand vous dépassez 72 octets. Si vous devez accepter des phrases de passe plus longues, limitez leur longueur ou utilisez Argon2id, qui n’a pas cette limite.
Faut-il utiliser bcrypt ou Argon2 ?
Pour un nouveau système, l’OWASP recommande d’abord Argon2id, car il est gourmand en mémoire et donc plus coûteux à attaquer avec des GPU. Bcrypt reste un choix solide, pris en charge partout, et un système qui utilise déjà bcrypt avec un coût de 10 ou plus n’a pas besoin d’être changé en urgence. Le plus important est d’utiliser l’un de ces algorithmes lents et salés, et non un simple SHA-256 ou MD5.
Anatomie d’un hash bcrypt
Un hash bcrypt comme $2b$12$R9h/cIPz0gi.URNNX3kh2OPST9/PgBkqquzi.Ss7KIUgO2t0jWMUW compte toujours 60 caractères et contient tout ce qu’il faut pour le vérifier :
• $2b$ : la version de l’algorithme.
• 12$ : le facteur de coût. La préparation de la clé s’exécute 2^12 = 4 096 fois.
• R9h/cIPz0gi.URNNX3kh2O : 22 caractères qui encodent le sel aléatoire de 128 bits.
• PST9/PgBkqquzi.Ss7KIUgO2t0jWMUW : 31 caractères qui encodent 184 bits du résultat.
L’encodage utilise l’alphabet Base64 propre à bcrypt (./A–Z a–z 0–9), qui n’est pas l’alphabet Base64 standard : ces parties ne peuvent donc pas être décodées avec un décodeur Base64 ordinaire.
Pourquoi les hachages rapides ne conviennent pas aux mots de passe
Les fonctions de hachage génériques comme SHA-256 sont conçues pour être rapides, et un GPU moderne en calcule des milliards par seconde. Si une base de hashs de mots de passe SHA-256 fuite, tous les mots de passe courants et la plupart des mots de passe courts tombent en quelques heures. Ajouter un sel empêche l’usage de tables précalculées, mais ne ralentit pas les tentatives.
Bcrypt corrige cela en rendant chaque hash volontairement coûteux et réglable. Au coût 12, un hash prend de l’ordre d’un quart de seconde sur un cœur de serveur typique, soit environ un million de fois plus qu’un seul SHA-256 sur le même cœur, et le schéma d’accès mémoire de bcrypt le rend en outre peu efficace sur GPU. À mesure que le matériel accélère, vous augmentez le coût ; les hashs existants peuvent être mis à niveau à la prochaine connexion de chaque utilisateur.
Le hachage n’est qu’une couche. Limitez le nombre de tentatives de connexion, vérifiez les nouveaux mots de passe par rapport à des listes de mots de passe compromis comme le recommande la NIST SP 800-63B, et proposez l’authentification à deux facteurs pour qu’un mot de passe deviné ne suffise pas à lui seul.
Outils gratuits similaires
- Générateur de mots de passe — Générez un mot de passe aléatoire fort, une phrase de passe facile à retenir ou un code PIN. Tout se passe dans votre navigateur, rien n’est envoyé ni stocké.
- Générateur de hash — Hachez du texte ou des fichiers en MD5, SHA-1, SHA-256, SHA-384, SHA-512 et CRC32, vérifiez une somme de contrôle ou calculez un HMAC. Les fichiers ne quittent jamais votre appareil.
- Générateur TOTP — Transformez un secret Base32 en codes 2FA en direct avec compte à rebours, créez un QR code otpauth:// pour les applications d’authentification, ou lisez une URI existante.
- Décodeur JWT — Décodez l’en-tête et la charge utile d’un JWT, lisez l’expiration en clair, vérifiez les signatures HS, RS, PS et ES ou signez un nouveau jeton. Rien ne quitte votre navigateur.