2012-11-29 165 views
3

我正在將大量用戶數據遷移到新系統中,而以前的開發者沒有將MD5密碼列轉換爲新密碼。MySQL:將未加密的密碼列轉換爲MD5哈希

有沒有辦法在password列上運行查詢並將值轉換爲MD5?

+2

如果你重新開始並有選擇,沒有理由選擇MD5。這已經很久了,並且一直被認爲相對不安全。理想情況下,您可以使用PBKDF或至少一個含鹽散列,但如果您打算使用散列散列,那麼至少應使用SHA-2散列族(如SHA-256)。 PHP和MySQL都支持它們,它們比MD5更安全。 –

+0

@JeremyBanks所以建議「不要使用MD5」(這很好),但是*推薦*爲「使用SHA-x」進行密碼散列?他們確實是「更強大」,但同MD5的密碼哈希相同*缺陷*:它們不是爲它設計的*。 (請參閱bcrypt,scrypt等,以獲得久經考驗的針對特定問題的解決方案。) – 2012-11-29 23:31:51

+0

另外,我覺得值得一提的是強調時尚:**沒有良好的鹽分,MD5(或SHA-x)密碼哈希**。 – 2012-11-29 23:34:27

回答

12

MySQL已經內置MD5,只需添加一個新的列,並設置加密值有:

UPDATE users SET encrypted_password = MD5(password); 

如果您對結果滿意,放棄原來的密碼欄。

+0

真棒PinnyM! – dcolumbus

1

你可以做到這一切在SQL - 只使用MD5()功能: insert into my_new_table select username,MD5(password) from old_table