4

这个问题已经在这个 Stack Overflow 问题中得到了回答,但它不是 Grails 特有的,而且有点模糊。

我使用 Spring Security 设置了我的 Grails 应用程序,但显然没有获得最新版本,因为它默认为 SHA-256 而不是 bcrypt。现在,我有生产数据,其中的密码散列在一种似乎不太理想的方法中。

启用bcrypt 散列是小菜一碟:

Config.groovy > grails.plugins.springsecurity.password.algorithm = 'bcrypt'

但现在我需要应用程序将旧哈希转换为新哈希。从根本上说,我知道当用户登录时,我应该让应用程序检查密码是否为 SHA-256 哈希,如果是,则使用 bcrypt 重新哈希输入的密码。一段时间后,它们将全部升级,并且可以删除该代码。

但是,确定密码哈希是来自 SHA-256 还是 bcrypt 的实际代码是什么?

编辑

也就是说,我调用来获取哈希的实际函数是什么?如何bcrypt(incomingpassword)查看它是否与现有密码哈希匹配?

4

1 回答 1

7

bcrypt 密码将以“$2a$10$”开头,长度为 60 个字符。SHA-256 没有模式,但长度为 64 个字符。

于 2013-12-20T19:11:47.683 回答