【发布时间】:2013-02-28 08:35:30
【问题描述】:
我介绍了 Web 应用程序的 Spring 安全性。首先,我的身份验证管理器如下。
<authentication-manager>
<authentication-provider>
<password-encoder hash='md5'>
</password-encoder>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>
</authentication-manager>
为了进行测试,我将使用“1”作为用户名和密码。我使用在线 md5 哈希生成器,我得到了 md5(1) 的“c4ca4238a0b923820dcc509a6f75849b”。使用此配置登录可以正常工作。我想尝试盐,我修改身份验证管理器如下。
<authentication-manager>
<authentication-provider>
<password-encoder hash='md5'>
<salt-source user-property="username"/>
</password-encoder>
<jdbc-user-service data-source-ref="dataSource"/>
</authentication-provider>
</authentication-manager>
因此,正如我在网上看到的那样,盐的使用方式就像哈希(盐 + 密码)。所以使用相同的工具我散列'11'然后得到散列值'6512bd43d9caa6e02c990b0a82652dca'。我用该值更新数据库。但是现在登录失败并抛出错误“原因:凭据错误”。这意味着密码与数据库不匹配。所以我的问题是,这是否意味着 Spring 使用不同的腌制方式?
【问题讨论】:
-
使用BCrypt。它更安全,并且盐渍会自行处理。 MD5 并不是散列密码的好选择。
-
应该试试。谢谢卢克
标签: spring spring-security md5 salt