首页 > 解决方案 > 如何将 bcrypt 摘要密码转换回原始字符串?

问题描述

我正在开发一个 ruby​​ 应用程序,我有一个使用 gem-bcrypt 存储加密密码的后端用户表。我怎样才能真正将我的密码转换回原始密码以在我的视图中显示它?这是消化我的密码的代码

def self.digest(string)        
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost        
BCrypt::Password.create(string, cost: cost)    
end

标签: ruby-on-railsrubyencryptionhashbcrypt

解决方案


从他们的自述文件中

背景

散列算法获取一大块数据(例如,您的用户密码)并创建一个“数字指纹”或散列。因为这个过程是不可逆的,所以没有办法从哈希返回密码。

换句话说:

hash(p) #=> <unique gibberish>

您可以存储散列并对照由潜在有效密码构成的散列对其进行检查:

<unique gibberish> =? hash(just_entered_password)

我也不明白你为什么要这样做。如果您可以将其还原为密码,那么如何防止窃取您的数据集的黑客做同样的事情?散列密码的全部意义在于无法逆转。您只能检查提供的密码是否正确。


推荐阅读