Rails设计,如何解密密码?

时间:2011-04-05 17:28:11

标签: ruby-on-rails ruby-on-rails-3 devise

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

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

4 个答案:

答案 0 :(得分:12)

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

gem扩展了对Devise的AES支持。

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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