Générateur bcrypt

bcrypt est toujours l’un des choix les plus sûrs pour stocker des mots de passe. Il est délibérément lent, dérive son propre sel et s’adapte aux améliorations matérielles grâce à un paramètre de coût ajustable. Ce générateur produit un hachage bcrypt conforme aux normes à partir d’un mot de passe en clair afin que vous puissiez créer un utilisateur de test, migrer un compte entre systèmes ou comparer des valeurs avec un hachage existant stocké dans une colonne users.password.

Comment hacher un mot de passe avec bcrypt

  1. 1

    Entrez le mot de passe en clair

    Jusqu'à 72 octets — bcrypt tronque silencieusement au-delà.

  2. 2

    Choisissez un facteur de coût

    10 est le défaut actuel ; 12 est courant pour les nouveaux systèmes ; 14 est paranoïaque. Chaque +1 double à peu près le temps de hachage.

  3. 3

    Un sel aléatoire est généré

    16 octets de sel sont tirés d'un RNG cryptographique et intégrés dans la chaîne de hachage résultante.

  4. 4

    Copiez le hachage

    La sortie est une chaîne auto-descriptive comme `$2b$12$...` qui inclut la version, le coût, le sel et le digest.

Anatomie d’un hachage bcrypt

$2b$12$mE2n5YqWjKqT9tXg.OQPoeeHZJ9hdSvOt5wFdRRQwl6yE1vWWY3z6
  |   |  |                      |
  |   |  sel (22 caractères Base64)  digest (31 caractères Base64)
  |   coût (2 chiffres, 4-31)
  version (2a, 2b, 2y — tous bcrypt)

La chaîne entière fait 60 caractères. Les colonnes typées VARCHAR(60) ou CHAR(60) sont le schéma standard.

Recommandations sur le facteur de coût

Coût Temps approximatif par hachage (CPU 2024) Cas d’utilisation
10 ~80 ms Défaut hérité, encore acceptable
12 ~300 ms Base recommandée actuelle
13 ~600 ms Applications à sécurité élevée
14 ~1.2 s Paranoïaque ; délai de connexion notable

Chaque incrément double le facteur de travail. Si la latence de connexion sous 500 ms est critique, restez à 10-12.

Octet de version : 2a vs 2b vs 2y

  • $2a$ — Spécification originale de 1999. La plupart des bibliothèques émettent des hachages 2a.
  • $2b$ — Révision de 2014 corrigeant un bug de troncature dans crypt_blowfish. Préféré pour les nouveaux hachages.
  • $2y$ — Tag spécifique à PHP, fonctionnellement équivalent à $2b$.

Les trois vérifient les uns contre les autres ; seul le tag dans la chaîne de hachage diffère.

Ce que bcrypt protège contre

  • Tables arc-en-ciel — Sel unique par hachage empêche les recherches pré-calculées.
  • Cracking GPU/ASIC — L’expansion de clé de Blowfish est liée à la mémoire et hostile aux GPU. Pas aussi hostile aux GPU qu’Argon2, mais toujours lent à forcer.
  • Fuites de base de données — Le texte en clair n’est jamais récupérable à partir du hachage sans force brute.

Ce que bcrypt ne protège PAS : mots de passe faibles (utilisez une longueur minimale et vérifiez les mots de passe contre les listes de fuites connues), bourrage d’identifiants (utilisez un second facteur), hameçonnage.

Limite de 72 octets

bcrypt utilise uniquement les 72 premiers octets du mot de passe. Les entrées plus longues sont tronquées silencieusement, ce qui est la même raison pour laquelle de nombreuses bibliothèques recommandent désormais de pré-hacher le mot de passe avec SHA-256 avant de le fournir à bcrypt. Les alternatives modernes (Argon2, scrypt) n’ont pas de telle limite.

Questions fréquentes

Oui pour le stockage des mots de passe, à coût ≥ 12. OWASP le considère toujours comme un algorithme acceptable. Argon2id est le choix préféré pour les nouveaux systèmes, mais migrer des hachages bcrypt hérités est une préoccupation de faible priorité.

Parce que le sel est généré aléatoirement par hachage. La vérification prend le sel du hachage stocké, re-hache le mot de passe soumis avec, et compare.

La plupart des bibliothèques ne l’exposent pas, et pour une bonne raison — des sels prévisibles contrecarrent l’objectif. Utilisez le sel généré par la bibliothèque ; c’est le chemin sécurisé.

Oui — le facteur de travail est symétrique. Vérifier un hachage de coût 14 prend 16 fois plus de temps que de vérifier un coût 10. Ajustez en tenant compte de votre débit de connexion.

Outils similaires