Jag tror du frågar hur det fungerar?? Svaret är ganska enkelt. StandardPasswordEncoder.matches()
är metoden du vill använda. Bakom kulisserna, StandardPasswordEncoder
kommer att avkoda det hashade lösenordet och extrahera saltet från den resulterande byte-arrayen. Det kommer sedan att använda det saltet för att hasha lösenordet i vanlig text som du skickade in. Om den resulterande hashen matchar den ursprungliga hashen, matchar dina lösenord! Se källan för detaljerna bakom StandardPasswordEncoder.matches()
:
public boolean matches(CharSequence rawPassword, String encodedPassword) {
byte[] digested = decode(encodedPassword);
byte[] salt = subArray(digested, 0, saltGenerator.getKeyLength());
return matches(digested, digest(rawPassword, salt));
}