[英]How to know plain text of :encrypted_password, in devise?
如果我使用has_secure_password,则我有白名单: password
, password_confirmation
和password_digest
。 与password
是纯文本password_digest
,其通过bcrypt加密。
但是当我将devise与我的用户模型一起使用时,它只有一个encrypted_password
字段,我不知道如何知道password
纯文本。 模式没有password field
。 我通常使用rails consle进行调试。 所以,任何人都可以帮助我如何知道的纯文本encrypted_password
。
无法从encrypted_password字段获取纯文本密码。 但是,您可以通过设置用户模型的password
属性来更改密码并将其设置为您选择的任何字符串。 例如:
user = User.find(34)
user.password = "some password"
user.save!
使用哈希函数存储密码的全部要点是,没有办法反转哈希函数。 这就是为什么它被称为单向功能的原因。
唯一的方法是尝试所有可能的密码,直到哈希函数产生与您相同的哈希为止。 像哈希猫这样的密码破解者可以做到这一点,但是它们使用GPU来并行化该过程。 如果您选择了一个长而复杂的密码,那么完成此操作的时间将比攻击者可以完成的时间更长。
使用在CPU时间或内存需求方面都很昂贵的哈希函数对于保护密码也很重要。 请参阅密码密钥派生功能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.