2016-07-24 63 views
-1

我很惊讶地看到,Spring Security PasswordEncoder(我使用的实现是BCryptPasswordEncoder,如果这样做有所不同)在编码密码时生成盐。用弹簧安全处理salt PasswordEncoder

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

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

回答

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