我正在开发一个ruby应用程序,我有一个后端User表,该表使用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
来自他们的readme:
背景
哈希算法会获取大量数据(例如,您的用户密码),并为其创建一个“数字指纹”或哈希。因为此过程是不可逆的,所以无法从散列回密码。
换句话说:
hash(p) #=> <unique gibberish>
您可以存储哈希值,并对照由可能有效的密码构成的哈希值进行检查:
<unique gibberish> =? hash(just_entered_password)
我也不明白你为什么要这么做。如果您可以将其恢复为密码,那么什么会阻止黑客窃取您的数据集来执行相同的操作?散列密码的全部重点是不能撤消密码。您只能检查提供的密码是否正确。