Hachage et vérification Bcrypt

Générez des hashs bcrypt salés pour les mots de passe et vérifiez un texte en clair contre un hash existant, le tout dans votre navigateur.

Générez des hashs bcrypt salés pour les mots de passe et vérifiez un texte en clair contre un hash existant, le tout dans votre navigateur. Générez des hashs bcrypt salés pour les mots de passe et vérifiez un texte en clair contre un hash existant, le tout dans votre navigateur.

Hash bcrypt généré

Contexte

Ce qu'est bcrypt et pourquoi il compte

bcrypt est une fonction de hachage de mot de passe adaptative conçue par Niels Provos et David Mazieres en 1999. Contrairement aux digests rapides comme MD5 ou SHA-256, bcrypt coûte délibérément du temps CPU : chaque hash exécute le chiffre Blowfish à travers un nombre configurable de rounds, et le travail double à chaque incrément du facteur de coût. Ce ralentissement est ce qui rend les attaques par dictionnaire et force brute hors ligne coûteuses. Une implémentation bcrypt correcte intègre aussi un sel aléatoire de 128 bits dans la chaîne de sortie, si bien que deux hashs du même mot de passe sont toujours différents et les tables arc-en-ciel sont inutiles contre lui.

Comment lire un hash bcrypt

Un hash bcrypt ressemble à $2b$12$e0.6kJ8a5X8u5Yp3qR5E0e9dF4z3W2c1v0b9n8m7l6k5j4h3g2f1. Les parties après les signes dollar portent la version de l'algorithme, le coût et le sel :

  • $2b$ -- la révision de l'algorithme. $2a$ et $2y$ sont des variantes plus anciennes avec des différences subtiles de gestion du bug de signe 8 bits ; $2b$ est la recommandation actuelle et ce que émet bcryptjs.
  • 12 -- le facteur de coût. 2^12 = 4096 rounds du key schedule. Chaque +1 double le temps ; 10-12 est une valeur par défaut raisonnable pour une connexion interactive, tandis que 12-14 convient aux identifiants stockés.
  • Les 53 caractères restants contiennent un sel base64 de 22 caractères (128 bits) plus une somme de contrôle de 31 caractères (184 bits). Toute la chaîne est un enregistrement autonome : le vérificateur relit la version, le coût et le sel depuis le hash et relance la dérivation pour comparer.

Comment utiliser cet outil

Tapez un mot de passe dans l'entrée, choisissez un facteur de coût, et appuyez sur Hacher. Le hash généré apparaît dans la zone de sortie et est aussi placé dans le champ de vérification. Pour vérifier un hash existant, collez-le dans le champ de vérification et tapez le mot de passe candidat dans l'entrée : la page compare immédiatement et affiche une coche verte ou une croix rouge. Comme la comparaison se fait avec bcrypt.compareSync, elle ne révèle jamais à quel point une mauvaise supposition était proche -- chaque tentative est hachée intégralement avant que le résultat ne soit décidé.

Notes et limites de sécurité

bcrypt tronque l'entrée à 72 octets : les mots de passe plus longs sont coupés silencieusement, si bien que deux mots de passe partageant les 72 premiers octets comparent égaux. Si vous avez besoin de saisies plus longues, pré-hachez avec SHA-256 (encodé hex) et hachez ce digest avec bcrypt. bcrypt est un algorithme délibérément légèrement consommateur en mémoire -- il résiste moins bien aux fermes GPU que des conceptions à mémoire dure comme Argon2 ou scrypt, mais sa table de 4 Ko et son état de 64 octets rendent toujours le craquage ASIC peu attractif. Pour les systèmes tout neufs, Argon2id est souvent un meilleur choix ; bcrypt reste une excellente option largement prise en charge pour la compatibilité héritée et pour les cas où l'environnement d'exécution ne peut pas fournir Argon2. Cette page s'exécute entièrement dans votre navigateur : le mot de passe et le hash ne quittent jamais votre appareil, et vous pouvez inspecter le chemin de code (bcryptjs MIT/BSD) intégré dans public/assets.

Construit avec la bibliothèque bcryptjs (BSD-3-Clause) intégrée dans public/assets. Le hachage s'exécute localement ; rien n'est transmis.

Questions fréquemment posées

Pourquoi le même mot de passe produit-il un hash différent à chaque fois ?
Un sel aléatoire de 128 bits est généré pour chaque hash et intégré à la sortie. Le vérificateur relit le sel depuis le hash, donc l'exactitude n'est pas affectée, mais des entrées identiques ne produisent jamais de sorties identiques.
Quel facteur de coût dois-je utiliser ?
Pour les connexions interactives, 10-12 est une bonne valeur par défaut. Pour les identifiants stockés, vous pouvez vouloir 12-14. Des coûts plus élevés sont plus sûrs mais plus lents ; choisissez la plus grande valeur que votre serveur peut supporter par connexion.
bcrypt est-il encore recommandé en 2026 ?
Oui. bcrypt reste largement déployé et est considéré sûr utilisé avec un coût de 10+. Pour les systèmes tout neufs, Argon2id ou scrypt à mémoire dure sont souvent préférés, mais bcrypt est un choix éprouvé, particulièrement quand ceux-ci ne sont pas disponibles.
Pourquoi bcrypt est-il plus lent que SHA-256 ?
C'est tout le propos. SHA-256 est conçu pour être rapide, ce qui permet aux attaquants d'essayer des milliards de suppositions par seconde. Le key schedule et le sel coûteux de bcrypt forcent les attaquants à passer un vrai temps par supposition, rendant les attaques hors ligne impraticables.
Que signifie la limite des 72 octets pour mes mots de passe ?
bcrypt ignore tout après le 72e octet. Deux mots de passe de plus de 72 octets partageant le même préfixe vérifieront identiquement. Pour prendre en charge des secrets plus longs, hachez-les d'abord avec SHA-256 (en hex) et hachez le digest avec bcrypt.
Mon mot de passe est-il envoyé à un serveur ?
Non. Tout s'exécute localement dans votre navigateur avec la bibliothèque bcryptjs intégrée. Vous pouvez vous déconnecter du réseau après le chargement de la page et cela continuera de fonctionner.