迁移 SHA1 加盐哈希以由 Bcrypt 加密

Migrate SHA1 Salted Hashes To Be Encrypted by Bcrypt

我有一个旧应用程序(基于 .Net C# 构建)包括用户 table 和散列密码 sha1(password . salt)我需要安全地迁移此数据 到我的新 Rails 应用程序(已经使用 bcrypt-ruby gem 加密密码)并寻找此问题的最佳解决方案 但要避免以下几种解决方案:

  1. 重置所有当前用户的密码并强制他们继续 'Forget password' 过程
  2. 使用任何类型的纯文本密码(例如,即使在用户首次登录我的新应用程序时临时使用)。
  3. 在 Rails 应用程序中也使用 SHA1 相同的加密程序(我需要使用 BCrypt 相反)。

我认为最好的方法(正如我所读到的)是让用户使用他们的旧密码登录我的新应用程序(我不知道该怎么做)然后加密他们的密码(通过BCrypt) 并按照 Rails app.

中新注册用户的密码加密相同的过程

感谢所有解决此问题的建议解决方案。

你走在正确的轨道上。你需要...

  • 在 Rails 应用程序中为您的用户 table 添加一个 sha1_password 字段。
  • 将身份验证修改为...
    • 检查他们的 bcrypt 密码是否存在。
    • 如果他们的新 bcrypt 密码字段为空,请检查 sha1_password。
    • 如果匹配,您就知道他们正在迁移,并且您也有他们的纯文本密码。
    • 设置他们的密码字段。
  • 结束。

这将允许您的用户随着时间的推移迁移。然后在某个时候你决定让剩下的走 'reset password' 路线或者至少开始用电子邮件烦扰他们并最终完全切换到 bcrypt。