Rails设计,如何解密密码?
在rails 3设计中,用户记录具有encrypted_password和password_salt。
如何在控制台中,我可以获取用户的密码? 如何解密?
默认设计使用BCrypt算法,AFAIK无法解密。 如果您需要能够解密密码,则需要使用其他算法,例如AES 。
有一个gem扩展了对Devise的AES支持。
注意:我从纯粹的学术兴趣回答了这个问题。 建议您继续使用BCrypt。 我鼓励您谨慎行事,因为管理密码是有风险的业务。
Devise使用BCrypt。 您需要修改USERS表中的encrypted_password字段并添加新的加密密码。
您可以在此网站中生成新的加密密码: 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