我正在使用带有 gvNIX 典型安全性(Spring security)的 Spring Roo。这很好用!感谢制作者!
向具有典型安全性的密码哈希添加盐的最佳方法是什么?
我正在使用带有 gvNIX 典型安全性(Spring security)的 Spring Roo。这很好用!感谢制作者!
向具有典型安全性的密码哈希添加盐的最佳方法是什么?
尝试org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
按照建议使用Spring Security 文档:
始终使用单向密码散列算法,例如 bcrypt,它使用内置的盐值,每个存储的密码都不同
为此,请按照以下步骤操作:
修改applicationContext-security.xml
文件以更改messageDigestPasswordEncoder
定义,如下所示:
<beans:bean
class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"
id="messageDigestPasswordEncoder"/>
修改MessageDigestPasswordEncoder
代码中的所有引用BCryptPasswordEncoder
按方法替换任何字符串比较密码验证BCryptPasswordEncoder.matches
。示例UserController.create
:
// Replace
//
// if(!savedUser.getPassword().equals(user.getPassword())){
//
// by
if(!messageDigestPasswordEncoder.matches(
user.getPassword(), savedUser.getPassword())){
用于messageDigestPasswordEncoder.encode
在 DB 上存储密码。
这未经测试,但应该可以工作。
祝你好运!
你是英雄!
一个小补充
<beans:bean class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder"
id="bCryptPasswordEncoder">
<beans:constructor-arg name="strength" value="11" />
</beans:bean>
代替原来的
<beans:constructor-arg value="sha-256"/>
将此标准添加到典型安全插件中是否是一个想法?