Wordpressがパスワードにどのようなハッシュを使用するかはよくわかりませんが、安全で元に戻せないと思います。ハッシュは一方向のアルゴリズムであるため、ハッシュされたパスワードを同等のMD5に変換することはできません。
これがあなたへの私の提案です:
using_md5_flag
デフォルト値を使用して、新しいWebサイトのusersテーブルにブール列を追加します0
。パスワードをWordpressから列にコピーし、 「ユーザーがシステムにログインするときwppassword
に」という列を作成しますmd5password
。次のコードを実行します(Datamapper ORMを想定し、必要に応じてActive Recordに変換します)。
$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: CodeIgniterでPhpassライブラリを使用する必要がある場合は、ここで変更したコピーを見つけることができます(コンストラクターを追加しました)。これを入れて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
、関数の動作をデモするファイルが付属しています。確認することをお勧めします。