如果您在我的网站上注册,我正在尝试对密码进行哈希处理,但它不起作用。这是我在注册时散列密码的代码:
$escapedName = mysql_real_escape_string($_POST['user']);
$escapedPW = mysql_real_escape_string($_POST['password']);
$salt = bin2hex(mcrypt_create_iv(32, MCRYPT_DEV_URANDOM));
$hashedPW = hash('sha256', $escapedPW . $salt);
然后我只是将它插入数据库(散列密码和盐)。例如,当我散列时Sas
,使用以下盐:
abac7ad23185ad19967f0d13e962197962782f0b7ec32d9889c27a93a9e800fa
这是散列密码:
8ca5c5f31fafbf382533dbcbfc22b3635d776ec7770c7eac58d8ef9f1fa3613c
但是当我尝试在登录时使用完全相同的密码和盐对密码进行哈希处理时,这将成为哈希密码:
6eb4b16444f18cee19db32bd29a39970e3019c5b1972a982ae4cb9a59642dffc
这是我用来登录的代码:
$escapedName = mysql_real_escape_string($_POST['user']);
$escapedPW = mysql_real_escape_string($_POST['password']);
$saltQuery = mysql_query("SELECT salt FROM members WHERE user='{$escapedName}'");
while($result = mysql_fetch_assoc($saltQuery)) {
$salt = $result['salt'];
}
$hashedPW = hash('sha256', $escapedPW . $salt);
$sql = mysql_query("SELECT * FROM members WHERE user='$escapedName' AND pass='$hashedPW'; ");
while ($res = mysql_fetch_assoc($query2)) {
$username = $res['user'];
$PW = $res['pass'];
}
我希望这不是太多的代码,我也希望你能理解我的问题。