187 votes

Dois-je stocker le sel avec bcrypt ?

javadoc de bCrypt propose ce code pour crypter un mot de passe :

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

Pour vérifier si un mot de passe en clair correspond à un mot de passe précédemment haché, 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 impliquent pour moi 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 ?

212voto

Greg Hewgill Points 356191

Le sel est incorporé dans le hachage (encodé dans un format de type base64).

Par exemple, dans les mots de passe Unix traditionnels, le sel était stocké sous la forme des deux premiers caractères du mot de passe. Les autres caractères représentaient la valeur de hachage. La fonction de vérification le sait et décompose le hachage pour en extraire le sel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X