从Hash_Secret格式(即Rails中的salt)以文本格式检索密码

时间:2011-05-20 04:30:34

标签: ruby ruby-on-rails-3 hash session-cookies

我正在为Rails应用编写一个非常简单的登录系统。我正在使用RESTful身份验证。这是一个相当传统的设置,我发送电子邮件和密码来验证用户。

在这里,我使用了REMEMBER ME?,如果同一用户再次想要使用cookie登录,用户可以重新登录。现在的情况是,我想在各自的文本框中打印电子邮件和密码。电子邮件已插入文本框,但我在文本字段中显示密码时遇到问题。

登录时,使用此类条件

@person.password_hash == BCrypt::Engine.hash_secret(@password, @person.password_salt)

如何以文本形式获取密码?

2 个答案:

答案 0 :(得分:3)

[讽刺]如果你想以文本形式显示它们,为什么还要对它们进行哈希处理?[/ irony]

但要认真对待:哈希是单向操作,你不能还原它。 http://en.wikipedia.org/wiki/Hash_function

因此你无法显示用户密码(顺便说一下 - 你不应该这样做,这违反了安全原则)。

在编写“记住我”功能时,请查看设计方法:http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Rememberable如果您希望该功能真正安全,则需要进行一些编写工作。

答案 1 :(得分:0)

经过大量搜索网络后,我发现BCrypt::Engine.hash_secret是密码的单向加密。这意味着没有办法扭转这一过程。因此,如果您尝试从BCrypt :: Engine.hash_secret创建密码文本,则无法执行此操作。