我很惊讶地看到Spring Security PasswordEncoder(我使用的实现是BCryptPasswordEncoder,如果这会产生影响)在编码密码时生成一个salt。
我不知道的是,在验证登录请求时我应该如何获得这种盐?我的意思是使用我自己的盐,但(大概)由于自动生成盐,我得到相同密码+盐组合的不同哈希值。
我有点困惑,并且不知道如何正确使用编码器。
答案 0 :(得分:1)
您应该使用内置验证逻辑,而不是编写自己的密码验证函数。因此,您不需要获取Spring Security生成的盐。请参阅PasswordEncoder
中的文档:
/**
* Verify the encoded password obtained from storage matches the submitted raw
* password after it too is encoded. Returns true if the passwords match, false if
* they do not. The stored password itself is never decoded.
*
* @param rawPassword the raw password to encode and match
* @param encodedPassword the encoded password from storage to compare with
* @return true if the raw password, after encoding, matches the encoded password from
* storage
*/
boolean matches(CharSequence rawPassword, String encodedPassword);