Générateur et vérificateur bcrypt

Générez le hash bcrypt d'un mot de passe pour le seed ou la migration de votre utilisateur de test, ou vérifiez si un mot de passe correspond au hash stocké en base. Coût réglable, préfixes $2b$, $2a$ et $2y$, et le calcul tourne en arrière-plan sans bloquer la page.

À utiliser pour des données de test, des seeds et le débogage de connexion. Le mot de passe est celui que vous tapez : cette page ne crée pas de mots de passe.

Que faire
0 sur 72 octets
416

Chaque point de plus double le temps. 10 à 12 est courant en production ; 4 garde les tests automatisés rapides.

Estimation sur cet appareil : mesure en cours…

Préfixe

Standard actuel. Node (bcrypt, bcryptjs), Python et Go.

Les trois donnent le même hash pour le même mot de passe et le même sel ; seule l'étiquette change. Utilisez celui que votre système enregistre pour que le seed ressemble aux autres enregistrements.

Tapez un mot de passe pour générer le hash.

Besoin de MD5 ou SHA-256 pour un checksum et non pour un mot de passe ? Utilisez le générateur de hash.

Générer un hash

Qu'est-ce que bcrypt

bcrypt est un algorithme de hachage de mots de passe créé en 1999, basé sur le chiffrement Blowfish. Il tire un sel de 16 octets pour chaque mot de passe et répète le travail 2 puissance le coût fois. Le résultat contient tout ce qu'il faut pour vérifier plus tard : préfixe, coût, sel et hash, dans une chaîne de 60 caractères. C'est pourquoi le même mot de passe donne un hash différent à chaque fois, et la vérification utilise le sel stocké dans le hash lui-même.

Pourquoi pas MD5 ou SHA-256 pour les mots de passe

MD5 et SHA-256 ont été conçus pour être rapides : une carte graphique en teste des milliards par seconde. Si la base fuit, les mots de passe courants apparaissent en quelques minutes. bcrypt est lent exprès. Avec un coût de 12, chaque essai prend des dizaines de millisecondes, ce qui ne pèse pas sur une connexion et rend impossible le test de millions de mots de passe. Un sel fixe pour tout le système ne règle rien, car l'attaquant n'a qu'à refaire la table une seule fois.

Comment choisir le coût

Le coût est l'exposant : 10 fait 1 024 tours, 12 en fait 4 096. Choisissez la valeur la plus haute que votre serveur supporte sans ralentir la connexion, et augmentez-la avec le temps. Dans les tests automatisés, un coût de 4 garde la suite rapide sans changer la logique, à condition que le code de production lise le coût dans la configuration. Le hash stocke son coût, donc les anciens mots de passe restent valides après le changement.

La limite de 72 octets

bcrypt n'utilise que les 72 premiers octets du mot de passe et ignore le reste sans prévenir. Ce sont des octets UTF-8, pas des caractères : é et ç comptent 2, un emoji compte 4. Certaines bibliothèques refusent les mots de passe plus longs, d'autres les tronquent. Si votre système accepte de longues phrases de passe, limitez la taille à l'inscription ou appliquez un hash avant, comme le fait Django.

$2a$, $2b$ et $2y$

$2a$ est la version de 1999. En 2011, un bug dans l'implémentation de PHP a donné naissance à $2y$, qui marque les hash corrects, et en 2014 OpenBSD a corrigé une erreur avec les mots de passe de plus de 255 octets et créé $2b$. Aujourd'hui, les bibliothèques traitent les trois comme équivalents : un hash $2y$ de Laravel est validé par Node, et un $2a$ de Spring par Python. Cette page vérifie les trois.

Utilisateurs de test dans les seeds et migrations

Générez le hash ici et enregistrez la valeur prête dans le seed, plutôt que d'appeler la bibliothèque à chaque exécution. Le seed reste ainsi déterministe et rapide. Gardez le mot de passe en clair uniquement dans la documentation de l'environnement de test, jamais dans le dépôt de production. Et vérifiez la taille de la colonne : le hash fait 60 caractères, et un VARCHAR(255) évite les problèmes si l'algorithme change plus tard.

Questions fréquentes sur bcrypt

Coût, préfixes, limite de 72 octets et quoi vérifier quand la connexion échoue.