web-dev-qa-db-fra.com

Dois-je stocker le sel avec bcrypt?

javadoc de bCrypt a ce code pour savoir comment crypter un mot de passe:

String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); 

Pour vérifier si un mot de passe en texte clair correspond à celui qui a été haché précédemment, utilisez la méthode checkpw:

if (BCrypt.checkpw(candidate_password, stored_hash))
    System.out.println("It matches");
else
    System.out.println("It does not match");

Ces extraits de code m'impliquent que le sel généré de manière aléatoire est jeté. Est-ce le cas, ou s'agit-il simplement d'un extrait de code trompeur?

183
RodeoClown

Le sel est incorporé dans le hachage (codé dans un format de style base64).

Par exemple, dans les mots de passe Unix traditionnels, le sel était stocké comme les deux premiers caractères du mot de passe. Les caractères restants représentaient la valeur de hachage. La fonction de vérificateur le sait et sépare le hachage pour extraire le sel.

210
Greg Hewgill