Générateur et vérificateur de hash bcrypt
Créez un hash bcrypt pour un mot de passe, ou testez si un mot de passe correspond à un hash enregistré, sans que rien ne quitte votre navigateur.
Générer et vérifier des hash bcrypt en ligne
bcrypt est un algorithme de hachage de mots de passe conçu pour être lent, volontairement. Un hash généraliste comme SHA-256 peut être calculé des milliards de fois par seconde, ce qui est exactement ce que veut quelqu'un qui devine des mots de passe à partir d'une base de données qui a fuité ; bcrypt rend chaque tentative coûteuse, et son facteur de coût permet d'augmenter ce coût à mesure que le matériel accélère. C'est l'algorithme par défaut de PHP, Laravel, Ruby on Rails, Spring Security et de nombreux autres frameworks.
Cette page ouvre l'onglet bcrypt du générateur de hash. Usages typiques : créer le premier compte administrateur directement dans une base de données, écrire une fixture de test, ou comprendre pourquoi un utilisateur n'arrive pas à se connecter.
Lire un hash bcrypt
Un hash bcrypt fait toujours 60 caractères et contient tout ce qu'il faut pour le vérifier plus tard. Prenons $2y$10$N9qo8uLOickgx2ZMRZoMye... :
| Partie | Signification |
|---|---|
$2y$ | Préfixe de version |
10 | Coût : 2 puissance 10, soit 1 024 tours de préparation de clé |
| Les 22 caractères suivants | Le sel aléatoire |
| Les 31 derniers caractères | Le hash proprement dit |
Choisir un coût
Le coût se règle ici de 4 à 14. Chaque cran double le travail : un coût de 12 est donc quatre fois plus lent qu'un coût de 10. Visez un temps de hachage d'une fraction de seconde sur votre propre serveur ; l'outil affiche sa progression pendant le calcul, ce qui donne une idée de la différence. Comme le coût est stocké dans le hash, vous pouvez l'augmenter plus tard et rehacher chaque mot de passe à la prochaine connexion de son propriétaire.
La limite de 72 octets
bcrypt ne lit que les 72 premiers octets d'un mot de passe. Une entrée plus longue n'est pas refusée, elle est tronquée sans avertissement : deux longs mots de passe qui partagent leurs 72 premiers octets donnent donc le même hash. Les caractères hors de l'alphabet anglais occupent souvent deux à quatre octets chacun en UTF-8, si bien que la limite arrive plus tôt que le nombre de caractères ne le laisse penser. L'outil compte les octets pendant la saisie et vous prévient dès que vous dépassez 72.
Vérifier un hash dans le code
| Langage | Créer | Vérifier |
|---|---|---|
| PHP | password_hash($pw, PASSWORD_BCRYPT) | password_verify($pw, $hash) |
| Node.js (bcryptjs) | bcrypt.hash(pw, 10) | bcrypt.compare(pw, hash) |
| Python (bcrypt) | bcrypt.hashpw(pw, bcrypt.gensalt()) | bcrypt.checkpw(pw, hashed) |
Pour obtenir des mots de passe aléatoires à hacher, utilisez le générateur de mots de passe. Pour des sommes de contrôle de fichiers plutôt que des mots de passe, restez sur SHA-256.