如果我使用has_secure_password,我有白名单:password
,password_confirmation
和password_digest
。 password
的纯文本是password_digest
的纯文本,由bcrypt加密。
但是当我使用我的用户模型设计时,它只有encrypted_password
字段,我不知道如何知道password
的纯文本。架构没有password field
。我通常使用rails consle来调试。所以任何人都可以帮助我了解encrypted_password
的纯文本。
答案 0 :(得分:1)
无法从encrypted_password字段获取纯文本密码。
但是,您可以通过设置用户模型的password
属性来更改密码并将其设置为您选择的任何字符串。例如:
user = User.find(34)
user.password = "some password"
user.save!
答案 1 :(得分:0)
使用哈希函数存储密码的全部意义在于无法反转哈希函数。这就是它被称为单向函数的原因。
唯一的方法是尝试所有可能的密码,直到哈希函数产生与您相同的哈希值。这就像hashcat那样的密码破解程序,但它们使用GPU并行处理这个过程。如果您选择了一个冗长而复杂的密码,那么执行此操作的时间将比攻击者完成的时间长。
使用在CPU时间或内存要求方面都很昂贵的哈希函数对于保护密码也很重要。请参阅密码密钥派生函数。