Rails Devise,如何解密密码?

发布于 2024-10-30 17:21:20 字数 92 浏览 2 评论 0原文

在rails 3设计中,用户记录有一个encrypted_pa​​ssword和一个password_salt。

如何在控制台中获取用户的密码?如何解密?

in rails 3 devise, a user record has an encrypted_password and a password_salt.

How in the console, can I obtain a user's password? How to unencrypt?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

云柯 2024-11-06 17:21:20

Devise 默认使用 BCrypt 算法,据我所知,该算法无法解密。如果您需要能够解密密码,则需要使用不同的算法,例如 AES

有一个 gem 扩展了对 Devise 的 AES 支持。

注:我回答这个问题纯粹是出于学术兴趣。建议您继续使用 BCrypt。我鼓励您谨慎行事,因为管理密码是有风险的事情。

Devise by default uses the BCrypt algorithm, which AFAIK is not decrypt-able. If you need to be able to decrypt passwords, you need to use a different algorithm such as the AES.

There is a gem which extends AES support for Devise.

Note: I have answered this question in a purely academic interest. It would be recommended you continue to use BCrypt. I encourage you to exercise severe caution, since managing passwords is risky business.

情释 2024-11-06 17:21:20

Devise 使用 BCrypt。您需要修改 USERS 表中的 crypto_password 字段并输入新的加密密码。

您可以在此网站生成新的加密密码:
http://www.bcrypt-generator.com/

Devise uses BCrypt. You need modify the encrypted_password field in the USERS table and put a new encrypted password.

You can generate a new encrypted password in this website:
http://www.bcrypt-generator.com/

枉心 2024-11-06 17:21:20

我认为这些密码是一种加密方式:您可以获取用户提供的密码,对其进行加密并将其与数据库中的加密密码进行比较(如果匹配 - 尝试成功)。但是数据库中的密码是不可能解密的,因此没有人可以得到所有密码。这是一项安全功能。

I think those passwords are one way encrypted: you can take a password provided by user, encrypt it and compare it to the encrypted one in the database (if matches - successful attempt). But un-encrypting the one in database is not possible, so that noone can get all passwords out. It is a security feature.

行雁书 2024-11-06 17:21:20
class User < ActiveRecord::Base

  devise :database_authenticatable...

  def verify_password?(password)
    encryptor_class = Devise::Encryptors.const_get(Devise.encryptor.to_s.classify)
    encryptor_digest = encryptor_class.digest(password, Devise.stretches, self.password_salt, Devise.pepper)
    encryptor_digest == self.encrypted_password
  end
end
class User < ActiveRecord::Base

  devise :database_authenticatable...

  def verify_password?(password)
    encryptor_class = Devise::Encryptors.const_get(Devise.encryptor.to_s.classify)
    encryptor_digest = encryptor_class.digest(password, Devise.stretches, self.password_salt, Devise.pepper)
    encryptor_digest == self.encrypted_password
  end
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文