gpt4 book ai didi

ruby-on-rails - 设计使用什么密码哈希算法?

转载 作者:太空宇宙 更新时间:2023-11-03 18:05:50 24 4
gpt4 key购买 nike

我想在不使用 devise 的 ruby​​ 应用程序中存储和验证密码,并让它们与 future 使用 devise 的应用程序兼容。 devise 使用的默认密码哈希方案是什么,是否可以从 devise 中提取和使用该组件?

最佳答案

Devise 的 DatabaseAuthenticatable 模块使用 BCrpyt 来散列密码,包裹在 Devise::Encryptor 中模块。相关方法 digest 非常简单:

def self.digest(klass, password)
if klass.pepper.present?
password = "#{password}#{klass.pepper}"
end
::BCrypt::Password.create(password, cost: klass.stretches).to_s
end

klass 仅用于获取几个参数:pepper,一个附加到密码预哈希但存储的字符串在数据库中(与盐不同,盐也被附加但与密码一起存储在数据库中);和 cost,衡量散列的安全程度(参见 the docs )。这两者都是静态的,您可以将它们硬编码到您的非 Devise 应用程序中(但请确保对 pepper 保密!)。

所以,你的散列方法可以写成:

def self.digest(password)
password = "#{password}#{ENV['PASSWORD_PEPPER']}"
::BCrypt::Password.create(password, cost: 10).to_s
end

关于ruby-on-rails - 设计使用什么密码哈希算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45988723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com