mms*_*mms 16 spring-security bcrypt
我使用BCryptPasswordEncoder使用spring安全性.现在要更改密码,我需要做的是将用户提供的现有密码与DB值进行比较.
但是由于salt是动态生成的BCryptPasswordEncoder,每次我从下面的方法得到不同的散列值时,并不一定会与我的DB值匹配.
public static String encodePassword(String password) {
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String hashedPassword = passwordEncoder.encode(password);
return hashedPassword;
}
Run Code Online (Sandbox Code Playgroud)
这个问题的补救措施是什么?我可以识别用于我的DB字段的盐并在上面的方法中使用相同的盐吗?
Sha*_*eep 42
使用接口matches上的方法PasswordEncoder检查密码是否有效,而不是再次对其进行编码并与现有哈希进行比较.
BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
String existingPassword = ... // Password entered by user
String dbPassword = ... // Load hashed DB password
if (passwordEncoder.matches(existingPassword, dbPassword)) {
// Encode new password and store it
} else {
// Report error
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15563 次 |
| 最近记录: |