使用spring security PasswordEncoder处理salt

时间:2016-07-24 19:05:04

标签: java spring spring-security

我很惊讶地看到Spring Security PasswordEncoder(我使用的实现是BCryptPasswordEncoder,如果这会产生影响)在编码密码时生成一个salt。

我不知道的是,在验证登录请求时我应该如何获得这种盐?我的意思是使用我自己的盐,但(大概)由于自动生成盐,我得到相同密码+盐组合的不同哈希值。

我有点困惑,并且不知道如何正确使用编码器。

1 个答案:

答案 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);