1

我使用grails acl安全。我想在以管理员身份登录后更改或编辑用户的密码。但是当我进入编辑模式时,密码字段显示之前作为加密字符串保存在用户表中的加密文本。有没有办法解密从数据库中获取的字符串并在密码字段中以原始字符串形式显示?

我没有在 grails acl 中得到任何直接的解决方案。

任何帮助,将不胜感激。

4

3 回答 3

3

没有很好的理由显示明文密码。作为用户或管理员,如果您想更改密码,那么您可以像任何其他属性一样进行操作。显示旧值(作为 * 字符,因为它是密码,或者如果您是管理员,则可能是散列值),然后您可以输入新密码。当您更新时,这将被散列并存储。

只要明文密码满足验证要求(最小长度、特殊字符等),那么更新应该可以正常工作。

请注意,密码通常不加密(这意味着它们可以被解密)而是散列。散列算法是有损的——给定任何输入,散列通常是一个固定长度的输出,因此它不能包含所有原始数据,也不能用于检索原始值。对于密码,这很好。要进行身份验证,您不会对存储的值进行去哈希处理并与登录页面中的明文值进行比较 - 您对登录页面值进行哈希处理并与存储的哈希值进行比较。对于某些算法,它们将是相同的,而其他算法(例如 bcrypt)它们将不同但等效,并且该算法将有一种方法来检查它们是否等效。

于 2013-10-22T15:04:28.670 回答
2

不,不可能解密密码。在编辑模式下向用户显示密码是个坏主意。它的紫罗兰色是安全法。您可以更改用户的密码,但看不到它。

于 2013-10-22T12:47:59.053 回答
0

我没有解密或对密码进行 d 哈希处理,但添加了一个新页面来更改用户的密码。在工作流程中,我做了如下:

1. while creating a user, new hashed password is created
2. while edit, all other desired information are allowed to edit except password (but password is showing in hashed dotted mode for security).
3. added a new link named 'change password' in the user list beside each user
4. finally in the newly created 'changePassword' page, i have assigned another new password with hash operation for the particular user
于 2013-10-23T06:44:14.153 回答