À propos de cet outil
Bcrypt est une fonction de hachage de mots de passe conçue pour être délibérément lente, ce qui est exactement ce que l’on veut : elle rend la recherche par force brute coûteuse. Son facteur de coût permet d’augmenter cette lenteur à mesure que le matériel s’accélère. Utilisez l’onglet Hacher pour transformer un mot de passe en hash bcrypt et alimenter une base de test, et l’onglet Vérifier pour contrôler si un mot de passe correspond à un hash que vous avez déjà.
Il tourne dans votre navigateur avec la bibliothèque bcryptjs, donc aucun mot de passe n’est envoyé à un serveur. Notez que bcrypt sert à stocker des mots de passe, pas à un chiffrement réversible.
Questions fréquentes
Pourquoi utiliser bcrypt plutôt que SHA-256 pour les mots de passe ?
SHA-256 est rapide — excellent pour l'intégrité des fichiers mais terrible pour les mots de passe, car les attaquants peuvent tester des milliards de tentatives par seconde. bcrypt est délibérément lent et inclut un sel aléatoire propre à chaque hachage, ce qui rend la force brute et les attaques par table arc-en-ciel précalculée peu praticables.
Que signifie le nombre « cost » (coût) ?
Le coût est un facteur de travail en puissance de deux : chaque +1 double environ le temps de calcul du hachage. Un coût de 10 (par défaut) prend de l'ordre de quelques dizaines de millisecondes ; un coût de 14-15 peut prendre plusieurs secondes. Choisissez le coût le plus élevé que votre serveur peut se permettre par connexion sans devenir un goulot d'étranglement.
Mes mots de passe sont-ils envoyés à un serveur ?
Non. Le hachage et la vérification s'exécutent entièrement dans votre navigateur, dans un Web Worker lorsque c'est possible, pour qu'un hachage à coût 15 ne fige pas l'onglet. Rien de ce que vous saisissez ici n'est transmis ni stocké où que ce soit.
Pourquoi chaque hachage bcrypt du même mot de passe est-il différent ?
bcrypt génère un nouveau sel aléatoire à chaque hachage, et ce sel est intégré directement dans la chaîne de sortie ($2b$10$<sel><hachage>). C'est normal, et c'est exactement ce qui empêche deux mots de passe identiques de produire des hachages identiques.
Pourquoi la vérification a-t-elle échoué avec « format de hachage invalide » plutôt que « ne correspond pas » ?
Un hachage bcrypt valide correspond toujours au motif $2a/b/x/y$<coût>$<53 caractères>. Si ce que vous avez collé ne correspond pas — tronqué, mauvais algorithme, espaces superflus — c'est un problème différent d'un mot de passe erroné, donc il est signalé séparément.