我不熟悉什麼樣的哈希Wordpress使用密碼,但我認爲它是安全的和不可逆轉的。散列密碼不能將轉換爲它們的MD5等價物,因爲散列是單向算法。
這裏是我的建議給你:
在您的新網站添加一個using_md5_flag
布爾列到用戶表默認值0
。從WordPress的過度複製密碼到一列wppassword
並創建一個名爲md5password
列當用戶登錄到系統中執行以下代碼(假設DataMapper的ORM,轉換爲活動記錄,如果你需要):
$u = new User();
$u->where('username', $this->input->post('username'))->get();
$y = new User();
$y->where('username', $this->input->post('username'));
if($u->using_md5_flag){
/*the flag is 1*/
$y->where('md5password', md5($this->input->post('password')));
$y->get();
if($y->exists()) echo "setting cookie and redirecting to logged in area";
else echo "Wrong credentials!";
}
else{
/*the flag is 0, use wordpress's hashing algorithm (not sure what this is)*/
$y->where('wppassword', wp_hashing_algo($this->input->post('password')));
$y->get();
if($y->exists()){
/*set the using_md5_flag flag so next time they log in it will ignore wp's*/
$y->using_md5_flag = 1;
/*set the new md5 password.*/
$y->md5password = md5($this->input->post('password'));
$y->save();
echo "setting cookie and redirecting to logged in area";
}
else{
echo "Wrong credentials.";
}
}
這代碼尚未經過測試,我在StackOverflow的編輯器中編寫了它......但這是我執行慢速轉換爲更安全哈希的方法。最後,如果你正在尋找一個真正安全的散列,請查看Bcrypt(phpass),它更能抵抗彩虹表攻擊。
更新1:如果您需要使用Phpass庫笨,你可以找到一個副本我修改here(我添加了一個構造函數)。把這個libraries/Phpass.php
您可以通過使用該庫在控制器中:
$this->load->library("phpass", array("iteration_count_log2" => 8, "portable_hashes" => FALSE));
$check = $this->phpass->CheckPassword($this->input->post('password'), $u->password);
if($check) /*logged in*/
else /*wrong credentials.*/
當你下載的文件Phpass它帶有一個test.php
文件,演示的功能是如何工作的。我建議審查它。
好的thx,所以我必須找到函數在wordpress中加密密碼... 你知道我在哪裏可以找到它嗎? – Necko
如果您使用的是WP的最新版本,它是'wp-includes/pluggable.php'中的'wp_hash_password'。這將開始你的蹤跡。實際使用的算法取決於您的設置。 –