Spring安全密码hash + salt

时间:2012-01-24 19:36:37

标签: java spring spring-security salt saltedhash

我正在使用以纯文本格式存储密码的遗留应用程序。我已将应用程序移植到spring 3 mvc + security。我还成功地使用sha256 +基于用户名的盐来获得Spring安全性处理认证和授权。这一切都很好,但作为部署的一部分,我将需要迁移现有数据库以使用新密码模式。我不确定Spring安全性如何使用salt进行密码散列,因此我无法编写可用于将旧明文密码迁移到新sha256 + salt模式的sql脚本。是否有任何文件或资源可以用来解决这个问题?

2 个答案:

答案 0 :(得分:9)

BasePasswordEncoder中记录了这一点:

  

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

的形式

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

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

注意:ShaPasswordEncoder扩展了BasePasswordEncoder

答案 1 :(得分:0)

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