如何在 grails 中解密“Spring Security”密码?

Sae*_*zal 2 encryption grails spring-security

我需要解密密码以通过电子邮件发送。谁能指导我如何在 grails 中解密“Spring Security”密码?

感谢 Smac

Bur*_*ith 5

密码没有加密,这意味着它们可以被解密,它们是散列的。散列接受各种输入并生成固定长度的输出,因此该过程是有损的,因为大的原始输入不能完全存储在小的散列输出中。

但这对密码没问题。不是解密(或“去散列”)存储的密码以查看登录尝试是否有效,而是从登录页面散列密码并将其与存储的散列值进行比较。这两个不必相同,例如当使用 Bcrypt 时,它们不会是相同的值,但哈希算法实现将具有确定两个哈希是否相等的逻辑。

如果您以可以检索原始值的方式存储密码,则最好将它们以明文形式存储。但这太疯狂了,从那时起,任何有权访问该表的人都可以看到它们。

正如评论中提到的,永远不要通过电子邮件发送明文密码。而是配置一个工作流程,您的用户可以在其中重置他们的密码。该http://grails.org/plugin/spring-security-ui插件有此作为特征。如果您不想使用整个插件,请随意窃取此功能的代码。基本上,工作流程是用户为其用户名请求重置电子邮件。只要求用户名,而不是他们的电子邮件;使用你已经拥有的那个。生成一个唯一的令牌并存储它,并在电子邮件中的链接中使用它。当用户单击链接时,您可以验证令牌并知道这不仅仅是来自黑客的任意请求,而是来自用户,因为您使用他们的电子邮件地址来验证他们的身份。