我有一个带有用户区和管理区的站点。在管理区域,我有一个用于创建用户的页面和一个用于创建管理员的页面。在用户和管理员页面上,我使用以下代码对密码进行哈希处理:
$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 时,密码不匹配。我认为这可能与加盐有关,因为密码的开头部分似乎是相同的。
顺便说一句,我使用的是 PHP 4.3。