Joomla 1.5 から WordPress に移行していますが、クライアントはユーザーの再登録を望んでいません。そのため、ユーザーのパスワードを jos_users テーブルの内容と一致させ、それに応じて WordPress の情報を更新する WordPress プラグインを作成しています。
Joomla のパスワード認証についてこれまでに読んだことはすべて、getCryptedPassword 関数を示しています。
http://docs.joomla.org/API15:JUserHelper/getCryptedPassword
私のプラグインは、ユーザーが同じ方法で入力したものを暗号化しています:
$db_password = explode(':', $query); //what's in the password field of jos_users
$salt = $db_password[1];
$string_to_be_hashed = $user_entered_pass . $salt;
$test_pass = md5($string_to_be_hashed);
$test_pass = $test_pass . ":" . $salt;
if($test_pass = query){echo "success"}
これを使用して 3 つのアカウントをテストしましたが、認証されているのは 2 つだけです。
具体的には: md5($password$salt):$salt != データベースのパスワード値
データベースでは、機能していないアカウントのパスワード値は、同じ暗号化と同じ形式 ([md5hash]:salt) を使用しているようです。クライアントのサイトにログインできるので、パスワードが正しいことはわかっています。
さらに、Joomla コードベース全体で getCryptedPassword 関数を検索しました。いずれの場合も、明示的な暗号化方式は送信されません。コードとドキュメントの両方で、デフォルトで md5 が使用されることが示されています。
代替の暗号化の可能性を探すべき場所を誰か考えられますか?
他にどこを見ればいいのか、この特定のユーザー アカウントが異なる方法で暗号化されているように見える理由がわかりません。