Printemps BCryptPasswordEncoder générer des mots de passe différents pour la même entrée
je suis en utilisant BCryptPasswordEncoder avec Ressort de sécurité .
mais le problème, c'est que son générant différents codé mot de passe pour la même entrée.
String password = "123456";
PasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String encodedPassword = passwordEncoder.encode(password);
System.out.print(encodedPassword);
output : $2a$10$cYLM.qoXpeAzcZhJ3oXRLu9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi
output2 : $2a$10$KEvYX9yjj0f1X3Wl8S.KPuWzSWGyGM9ubI71NOm3ZNbJcwWN6agvW
output3 : $2a$10$nCmrPtUaOLn5EI73VZ4Ouu1TmkSWDUxxD4N6A.8hPBWg43Vl.RLDC
à chaque fois une sortie différente .
Pourquoi avez-vous besoin de mots de passe pour avoir le même hash?
La meilleure réponse à cette question est ici: Comment peut-bcrypt ont intégré dans les sels?
La meilleure réponse à cette question est ici: Comment peut-bcrypt ont intégré dans les sels?
OriginalL'auteur Bhavesh | 2014-09-15
Vous devez vous connecter pour publier un commentaire.
C'est un peu paradoxal que le nom
passwd
dans cet exemple représente le encodedPassword (le code de hachage) -- pas le rawPassword.OriginalL'auteur blueberry0xff
Le mot de passe généré sont salés et donc différent.
Veuillez lire la documentation pour la encode() méthode où il indique clairement le mot de passe est salé.
que voulez-vous atteindre? Pourquoi avez-vous besoin de la même valeur de hachage pour les mots de passe?
je veux réaliser un simple login & enregistrer l'opération avec ressort de sécurité à l'aide de bcrpt .
pour cela, il existe la méthode matches()[docs.printemps.io/printemps-sécurité/site/docs/3.2.5.PRESSE/apidocs/.... Veuillez lire la documentation des classes que vous souhaitez utiliser.
OriginalL'auteur Uwe Plonus
Qui est parfaitement normal, car BCryptPasswordEncoder utilise un sel de générer le mot de passe. Vous pouvez lire à ce sujet l'idée derrière le "salage" un mot de passe ici et ici.
C'est ce que dit la documentation pour la
encode
méthodeOriginalL'auteur geoand
Le 22 caractères directement après la 2e $ représentent le sel de la valeur, voir https://en.wikipedia.org/wiki/Bcrypt#Description . Le "sel" est un hasard ajout de données pour le mot de passe avant de hachage, alors un algorithme de hachage avec des paramètres donnés dans la plupart des cas, produire les différentes valeurs de hachage pour le même mot de passe (protection contre la dite arc-en-ciel attaques).
Nous allons disséquer la première sortie indiquée dans la question d'origine:
$2a$10$cYLM.qoXpeAzcZhJ3oXRLu9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi
$2a
: Identificateur de BCrypt algorithme$10
: Paramètre pour le nombre de tours, ici 2^10 tourscYLM.qoXpeAzcZhJ3oXRLu
: Sel (128 bits)9Slkb61LHyWW5qJ4QKvHEMhaxZ5qCPi
: La réelle valeur de hachage (184 bits)Le sel et la valeur de hachage sont à la fois codé à l'aide de Radix-64.
OriginalL'auteur user1364368