2016-09-18 93 views
0

进行加密,我有一个旧的应用程序(内置.Net的C#)包括带有散列密码sha1(password . salt)用户表,我需要安全迁移这些数据来我的新的Rails应用(其中已经加密使用bcrypt-ruby gem密码),并寻找这个问题但避免以下一种解决方案的最佳解决方案:迁移SHA1盐渍哈希要通过Bcrypt

  1. 重置当前所有用户的密码,并强迫他们进行 ‘忘记密码’程序
  2. 使用任何种类的纯文本密码(例如,当用户第一次登录到我的新应用程序中时,例如暂时)。
  3. 在Rails应用程序中也使用SHA1相同的加密程序(我需要改用BCrypt )。

我认为最好的方法(正如我读过的)是让用户使用旧密码登录我的新应用程序(我不知道该怎么做),然后加密他们的密码(通过BCrypt),并遵循Rails应用程序中新注册用户密码加密的相同程序。

我欣赏所有建议的解决方案来解决这个问题。

+3

您似乎已经知道该怎么办?你在问什么? – PeeHaa

回答

0

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

  • 将sha1_password字段添加到Rails应用中的Users表中。
  • 将身份验证修改为...
    • 检查他们的bcrypt密码是否存在。
    • 如果新密码字段为空,请检查sha1_password。
    • 如果存在匹配项,则知道它们正在迁移,并且您还有纯文本密码。
    • 设置他们的密码密码字段。
  • 结束。

这将允许您的用户随着时间迁移。然后在某个时候,你决定让其他人去使用“重置密码”路线,或者至少开始用电子邮件来惹恼他们,并最终完全切换到bcrypt。

+3

你忘了最重要的部分。在转换时删除sha1哈希。否则,整个事情是没用的。 – PeeHaa

+0

@PeeHaa这是值得的,但不是绝对必要的,因为第一步是“检查bcrypt是否存在”。只有在空白的时候我们才会回到sha1。 –

+2

这是非常严格的必要。如果你没有核武它,这一切的努力是没有用的,因为你仍然会遇到你想要阻止的问题。将“哈希”恢复为纯文本的能力... – PeeHaa