2016-09-18 128 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