2013-10-25 26 views
0

我有一個vBulletin數據庫,我試圖切換用戶到自定義系統,我已經轉換用戶名和密碼,然後我將雙MD5'd密碼轉換爲SHA256,但我留下了一個問題,這是鹽。MySQL/PHP的 - 數據庫用戶登錄轉換

什麼是最簡單的方法來轉換舊的vBulletin鹽,或檢查密碼是否正確,然後生成一個新鹽他們第一次登錄?

檢查腳本:

$vbconvert = md5(md5($_POST["password"])); 
$check_password = hash('sha256', $vbconvert . $row['salt']); 
for($round = 0; $round < 65536; $round++) 
{ 
     $check_password = hash('sha256', $check_password . $row['salt']); 
} 

if($check_password === $row['password']) 
{ 

     $login_ok = true; 
} 

總之,什麼是要麼轉換或創建一個新的鹽的最簡單的方法?

+0

我將離開「double md5'd」密碼開始,然後創建一個新的數據庫列,以跟蹤用戶是否有更新(SHA256)密碼。如果他們不這樣做,那麼他們需要在登錄時進行密碼重置,從而更新密碼和鹽。這樣,用戶仍然可以登錄,並且不必擔心反向工程鹽和散列。 – jpodwys

回答

0

你知道PHP函數password_hash(),推薦散列密碼的方法。它會爲每個密碼自動生成密碼安全的鹽,並將其包含在60個字符的字符串中。

$2y$10$nOUIs5kJ7naTuTFkBy1veuK0kSxUFXfuaOKdOKf9xYT0KKIGSJwFa 

上面的例子是password_hash的可能結果(),看看在該部分$nOUIs5kJ7naTuTFkBy1veu,這是所生成的鹽,它會通過功能password_verify()被用於檢查該密碼。

你不用擔心鹽了,沒有額外的數據庫字段是必要的,只需存儲散列,你很好!

遷移密碼最簡單的方法就是等待用戶下次登錄。當他輸入密碼時,可以檢查哈希是否已經遷移,然後檢查password_verify()。如果尚未遷移,請使用舊的vBulletin代碼進行檢查,如果密碼正確,則使用password_hash()生成新的散列並存儲它。

相關問題