Spring Security密码哈希+盐

3

我正在处理一款遗留应用的代码,它将密码以明文形式存储。我已经将该应用移植到了Spring 3 MVC + Security平台上,并成功地使用基于用户名的salt和sha256算法使Spring Security处理身份验证和授权。这一切都很好,但是在部署时,我需要将现有的数据库迁移到新的密码方案。由于我不知道Spring Security如何使用salt进行密码哈希,所以我无法编写一个SQL脚本来将旧的明文密码迁移到新的sha256+ salt密码方案中。是否有文件或资源可供我查看以解决这个问题?


你尝试过使用他们的http://static.springsource.org/spring-security/site/docs/2.0.x/apidocs/org/springframework/security/providers/encoding/ShaPasswordEncoder.html吗?你也知道盐值。那么你是否尝试过查看哈希值是否匹配? - Cratylus
我已经尝试过将盐作为前缀和后缀使用sha256生成器,但没有成功匹配spring生成的密码。 - vikash dat
2个回答

10

这在BasePasswordEncoder中有记录:

生成的密码将采用password{salt}格式。

因此,在您的情况下,您可以使用以下简单代码计算加盐密码:

new ShaPasswordEncoder(256).encodePassword(oldPassword, randomSalt)

注意: ShaPasswordEncoder 扩展了 BasePasswordEncoder


1
我是个傻瓜...当我尝试使用盐作为前缀/后缀时,我没有包含{}..谢谢。 - vikash dat

0
  1. 如果您使用默认密码编码,则源代码似乎很有用。(选择适用于您使用的版本的分支)。
  2. 您可以实现自己的PasswordEncoder并定义盐的使用方式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接