【发布时间】:2015-09-15 17:30:46
【问题描述】:
我正在使用带有 gvNIX 典型安全性(Spring 安全性)的 Spring Roo。这很好用!感谢制作者!
向具有典型安全性的密码哈希添加盐的最佳方法是什么?
【问题讨论】:
标签: spring-roo gvnix
我正在使用带有 gvNIX 典型安全性(Spring 安全性)的 Spring Roo。这很好用!感谢制作者!
向具有典型安全性的密码哈希添加盐的最佳方法是什么?
【问题讨论】:
标签: spring-roo gvnix
尝试使用org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder 建议Spring Security documentation:
始终使用单向密码散列算法,例如 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 将密码存储在数据库中。
这未经测试,但应该可以工作。
祝你好运!
【讨论】:
你是英雄!
一个小小的补充
<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"/>
是否可以将此标准添加到典型安全插件中?
【讨论】: