升级自:
import org.springframework.security.authentication.encoding.PasswordEncoder;
@Override
public String encodePassword(String plainPassword, Object salt) {
final String finalSalt = salt != null ? salt.toString() : "";
return DigestUtils.md5Hex(finalSalt + plainPassword);
}
@Override
public boolean isPasswordValid(String encodedPassword, String plainPassword, Object salt) {
final String enteredPassword = encodePassword(plainPassword, salt);
return encodedPassword.equals(enteredPassword);
}
致:
import org.springframework.security.crypto.password.PasswordEncoder;
@Override
public String encode(CharSequence rawPassword) {
final String finalSalt = salt != null ? salt.toString() : "";
return DigestUtils.md5Hex(finalSalt + plainPassword);
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
final String enteredPassword = encodePassword(plainPassword, salt);
return encodedPassword.equals(enteredPassword);
}
不知道该怎么办 salt
?
我不知道我是否可以转换 rawPassword
到 String
取代 plainPassword
?
1条答案
按热度按时间vnjpjtjt1#
新方法期望salt是编码密码的一部分。根据
PasswordEncoder.encoder()
javadoc:对原始密码进行编码。一般来说,一个好的编码算法应用sha-1或更大的哈希值与一个8字节或更大的随机生成的salt相结合。
如果你看这个答案,它说明了
BCryptPasswordEncoder
在编码的密码中对salt进行编码。这里解释了实际的bcrypt编码密码格式。