如何在设计中知道:encrypted_pa​​ssword的纯文本?

时间:2017-01-21 15:30:44

标签: ruby-on-rails devise passwords

如果我使用has_secure_password,我有白名单:passwordpassword_confirmationpassword_digestpassword的纯文本是password_digest的纯文本,由bcrypt加密。

但是当我使用我的用户模型设计时,它只有encrypted_password字段,我不知道如何知道password的纯文本。架构没有password field。我通常使用rails consle来调试。所以任何人都可以帮助我了解encrypted_password的纯文本。

2 个答案:

答案 0 :(得分:1)

无法从encrypted_pa​​ssword字段获取纯文本密码。 但是,您可以通过设置用户模型的password属性来更改密码并将其设置为您选择的任何字符串。例如:

user = User.find(34)
user.password = "some password"
user.save!

答案 1 :(得分:0)

使用哈希函数存储密码的全部意义在于无法反转哈希函数。这就是它被称为单向函数的原因。

唯一的方法是尝试所有可能的密码,直到哈希函数产生与您相同的哈希值。这就像hashcat那样的密码破解程序,但它们使用GPU并行处理这个过程。如果您选择了一个冗长而复杂的密码,那么执行此操作的时间将比攻击者完成的时间长。

使用在CPU时间或内存要求方面都很昂贵的哈希函数对于保护密码也很重要。请参阅密码密钥派生函数。