哈希密码不匹配

时间:2012-07-14 05:56:57

标签: php hash passwords

我正在使用以下功能。当我注册用户时,哈希似乎工作正常。当我尝试登录哈希不匹配时。它具有正确的哈希值和额外的哈希值。

问题是什么?

function salt($pass){
$salt = 'hello';
return hash('sha512', $pass.$salt);
}

function valid_credentials($user,$pass) {
$user = mysql_real_escape_string($user);
$pass = salt($pass);
$total = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_name` = '".$user."' AND `password` = '{$pass}' ");
return (mysql_result($total, 0) == '1' ) ? true : false;
}

function add_user($user, $pass) {
$user = mysql_real_escape_string(htmlentities($user));
$pass = salt($pass);
$time = now();
mysql_query("INSERT INTO `users` ( user_name, password, date_created ) VALUES ( '{$user}', '{$pass}', '{$time}' )");
}

2 个答案:

答案 0 :(得分:1)

我认为在你的验证码中这一行:

$total = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_name` = '".$user."' AND `password` = '{$pass}' ");

需要改为:

$total = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `user_name` = '".$user."' AND `password` = '".$pass."' ");

现在它似乎正在检查密码列是否等于“{$ pass}”。

答案 1 :(得分:1)

只需仔细检查在将值插入db表之前和之后返回的值。使用修剪功能进行回音。或使用strcmp检查使用生成的值检查数据库中插入的值。