Tôi nghĩ bạn đang hỏi nó hoạt động như thế nào ?? Câu trả lời là khá đơn giản. StandardPasswordEncoder.matches()
là phương pháp bạn muốn sử dụng. Hậu trường, StandardPasswordEncoder
sẽ giải mã mật khẩu được băm và trích xuất muối từ mảng byte kết quả. Sau đó, nó sẽ sử dụng muối đó để băm mật khẩu văn bản thuần túy mà bạn đã nhập. Nếu hàm băm kết quả khớp với hàm băm ban đầu, mật khẩu của bạn sẽ khớp! Tham khảo nguồn để biết chi tiết đằng sau 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));
}