密码更改/编辑grails acl

时间:2013-10-22 12:21:21

标签: grails encryption

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

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

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

我没有解密或d-hashed密码,但添加了一个新页面来更改用户的密码。在工作流程中我做了如下:

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