这个问题已经在这个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)
查看它是否与现有密码哈希匹配?
bcrypt密码将以"$2a$10$"开头,长度为60个字符。SHA-256没有模式,但它将有64个字符长。