ユーザーエリアと管理エリアのあるサイトがあります。管理者エリアには、ユーザーを作成するためのページと管理者を作成するためのページがあります。ユーザーと管理者のページで、以下のコードを使用してパスワードをハッシュしました。
$hasher = new PasswordHash(8, false);
$password = $HTTP_POST_VARS['password'];
$hash = $hasher->HashPassword($password);
$HTTP_POST_VARS['password'] = $hash;
ユーザーページの場合、パスワードを確認するためのコードは次のとおりです。
$hasher = new PasswordHash(8, false);
$check = $hasher->CheckPassword($password, $arrData[$conf['PASSWORD']['FIELD']]);
if ($check) {
//login...
}
これは完全に正常に機能します。私のユーザーパスワードはハッシュ化されており、パスワードを正しくチェックします。管理者ログインページで同じコードを使用していますが、機能していません。データベースから正しい情報を取得しますが、CheckPasswordを使用すると、パスワードが一致しません。パスワードの最初の部分は同じように見えるので、それは塩漬けと関係があるのではないかと思います。
ちなみに、私はPHP4.3を使用しています。