这个问题已经在这个Stack Overflow问题中得到了回答,但它不是Grails特定的,而且也有点模糊。
我使用Spring Security设置了我的Grails应用程序,但显然没有获取最新版本,因为它默认使用SHA-256而不是bcrypt进行哈希。现在我有生产数据,其中密码似乎使用不太理想的方法进行了哈希。
启用bcrypt哈希实际上非常容易:
但现在我需要这个应用程序将旧哈希转换为新哈希。从根本上讲,我理解当用户登录时,应该让应用程序检查密码是否为SHA-256哈希,如果是,则使用bcrypt重新哈希输入的密码。过一段时间后,它们都会升级,然后可以删除该代码。
不过,实际上如何确定密码哈希是来自SHA-256还是bcrypt的代码呢?
编辑
也就是说,我要调用哪个实际函数来获取哈希? 我如何bcrypt(incomingpassword)以查看它是否与现有密码哈希匹配?
我使用Spring Security设置了我的Grails应用程序,但显然没有获取最新版本,因为它默认使用SHA-256而不是bcrypt进行哈希。现在我有生产数据,其中密码似乎使用不太理想的方法进行了哈希。
启用bcrypt哈希实际上非常容易:
Config.groovy > grails.plugins.springsecurity.password.algorithm = 'bcrypt'
但现在我需要这个应用程序将旧哈希转换为新哈希。从根本上讲,我理解当用户登录时,应该让应用程序检查密码是否为SHA-256哈希,如果是,则使用bcrypt重新哈希输入的密码。过一段时间后,它们都会升级,然后可以删除该代码。
不过,实际上如何确定密码哈希是来自SHA-256还是bcrypt的代码呢?
编辑
也就是说,我要调用哪个实际函数来获取哈希? 我如何bcrypt(incomingpassword)以查看它是否与现有密码哈希匹配?
grails.plugin.springsecurity.password.hash.iterations = 1
,因为1.2插件使用了1次迭代,而2.0插件默认为10,000。 - Burt Beckwith