Rails设计,如何解密密码?

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

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

默认设计使用BCrypt算法,AFAIK无法解密。 如果您需要能够解密密码,则需要使用其他算法,例如AES 。

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

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

Devise使用BCrypt。 您需要修改USERS表中的encrypted_pa​​ssword字段并添加新的加密密码。

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

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

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