2013-01-04 21 views
1

我做了一個網站的時間。原始的PHP與SQL。現在我正在用CakePHP做一個新的版本,這意味着我想遵循很多約定,也就是說,我想盡可能保留CakePHP的方式。遷移到新的數據庫結構後,我可以保留散列的密碼嗎?

但是:

還有就是我想拆分成新版本兩個新的,添加字段和劃分用戶識別字段和使用情況等統計users表,我現在還在找工作的最佳途徑要做到這一點容易,這不是主要問題,但任何幫助將不勝感激。表名稱不同以適應慣例,並且字段已更改。我仍然需要對此進行一些研究。

舊網站使用sha1()哈希密碼,我想知道是否有任何機會保持記錄,而不使所有的用戶再次註冊。

我發現了一些破解技巧,比蠻力做得更快。那麼,他們說他們更快,但我有大約1000個用戶。此外,我認爲破解我的用戶密碼以使我的工作更輕鬆是不合法也不道德的。所以破解似乎是不可能的。

我想只是複製記錄,併爲它們設置了一個「重置密碼」,以便他們可以在註冊時再次使用發送給他們提供的電子郵件的代碼登錄。這不是一個非常糟糕的選擇,但我希望只有在沒有其他方式的情況下才能做到這一點。

那麼,有沒有辦法做到這一點?

+0

爲什麼不剛過舊錶中插入用戶回新一,同時設置新字段的默認值(S)(當用戶登錄和/或請求信息)循環?爲什麼你需要知道他們的非哈希密碼才能複製它? (假設你打算使用相同的哈希算法) – Supericy

+0

的算法是不推薦了一個。在這個網站上安全性還沒有問題,所以我想我可以保留舊的。我只會檢查如何在cakephp中更改它並嘗試一下。謝謝。 –

回答

5

即使您破解SHA-1哈希值,您也不能確定是否發現了真正的密碼或只有碰撞。所以你不能用不同的哈希算法重新哈希這些發現的密碼。

不需要重置密碼,您可以等待直到用戶下次登錄。

  1. 然後您可以先檢查新算法。
  2. 如果不匹配,請將其與舊的SHA-1哈希值進行比較。
  3. 如果舊的散列值匹配,那麼您可以計算並存儲新的散列值,因爲您知道真正的密碼。

每個密碼存儲系統都必須有切換到更好散列算法的選項,您的問題不是一次性遷移問題。好的密碼哈希算法,如BCrypt有成本因素,有時你必須增加這個成本因素(因爲硬件更快),那麼你需要完全相同的過程,你需要的遷移。

我真的推薦切換到像BCrypt這樣慢速的密鑰派生函數,而不是像SHA-1或SHA-256這樣的快速哈希算法,因爲它們速度太快,並且可能被強制過於簡單(3 Giga SHA-1 values 2013年每秒)。

0

是的,您可以重置密碼或在新系統上應用與以前相同的散列算法。

3

如果需要,您可以保留現有的密碼。只需爲AuthComponent創建一個custom Authenticate class並覆蓋相關方法以使用所需的散列方案。

相關問題