0

我正在使用带有 gvNIX 典型安全性(Spring security)的 Spring Roo。这很好用!感谢制作者!

向具有典型安全性的密码哈希添加盐的最佳方法是什么?

4

2 回答 2

2

尝试org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder按照建议使用Spring Security 文档

始终使用单向密码散列算法,例如 bcrypt,它使用内置的盐值,每个存储的密码都不同

为此,请按照以下步骤操作:

  1. 修改applicationContext-security.xml文件以更改messageDigestPasswordEncoder定义,如下所示:

    <beans:bean 
        class="org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder" 
        id="messageDigestPasswordEncoder"/>
    
  2. 修改MessageDigestPasswordEncoder代码中的所有引用BCryptPasswordEncoder

  3. 按方法替换任何字符串比较密码验证BCryptPasswordEncoder.matches。示例UserController.create

    // Replace
    //
    // if(!savedUser.getPassword().equals(user.getPassword())){
    //
    // by
    if(!messageDigestPasswordEncoder.matches(
             user.getPassword(), savedUser.getPassword())){     
    
  4. 用于messageDigestPasswordEncoder.encode在 DB 上存储密码。

这未经测试,但应该可以工作。

祝你好运!

于 2015-09-23T12:17:29.290 回答
0

你是英雄!

一个小补充

<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"/>

将此标准添加到典型安全插件中是否是一个想法?

于 2015-09-23T18:34:44.190 回答