登录时比较哈希值时出错
Error when comparing hashes when logging in
我正在创建一个简单的登录系统,我使用sha256设置密码,并在数据库中使用随机数存储一个salt。然而,当我尝试登录,当它去比较哈希失败。有人知道为什么吗?
<?php
session_start();
$username = $_POST['username'];
$password = $_POST['password'];
$mysql_db_hostname = "localhost";
$mysql_db_user = "root";
$mysql_db_database = "login";
$con = mysql_connect($mysql_db_hostname, $mysql_db_user) or die("Could not connect database");
mysql_select_db($mysql_db_database, $con) or die("Could not select database");
$query = "SELECT password, salt FROM registered_users WHERE username='$username'";
$result = mysql_query($query);
if(mysql_num_rows($result) < 1) //no such user exists
{
echo 'false';
header('Location: index.php');
}
$userData = mysql_fetch_array($result, MYSQL_ASSOC);
$hash = hash('sha256', $userData['salt'] . hash('sha256', $password) );
if($hash != $userData['password']) //incorrect password
{
echo 'false';
header('Location: index.php');
}
else
{
echo 'true';
$_SESSION['username']=$row['username'];
}
session_write_close();
下面是我如何散列我的pass
// hash the password using sha256 a string of 64 characters
$hash = hash('sha256', $password);
// create the salt, random string of characters appened to hash
function createSalt()
{
$string = md5(uniqid(rand(), true));
return substr($string, 0, 3);
}
$salt = createSalt();
$hash = hash('sha256', $salt . $hash);
下面是我插入数据的方法
mysql_query("INSERT INTO registered_users(username, name, email, password,salt)VALUES('$username', '$name', '$email', '$hash', '$salt')");
header("location: index.php?remarks-success");
mysql_close($con);
?>
请确保您在数据库中存储密码的方式与您在这里检查密码的方式相同。
所以要把它放进去,你应该先对密码进行散列,然后用盐重新散列。
相关文章:
- 在Javascript中实现对哈希值的暴力攻击
- 用户单击带有哈希值的链接以访问该页面,如果禁用Javascript会发生什么情况
- 要发送到控制器的 HREF 链接中的哈希值
- 使用 JavaScript 计算 Blob 的哈希值
- JavaScript 文件哈希值与文件的一部分一起生成
- JavaScript 隔离哈希值
- JavaScript 获取以前的哈希值
- 设置使用 window.open() 打开的空白页的哈希值
- Chrome 不返回哈希值
- Javascript 使用哈希值重新加载页面
- 为什么从其他网络返回会保留最后一个哈希值,同时显示第一个哈希值的内容
- 来自 Javascript 和 PHP 的不同哈希值
- 使用Javascript从url中获取空哈希值
- 如何使用JS重定向到具有哈希值的引用URL
- 单击一页滚动菜单时更改URL哈希值
- 是否可以在Mustache中基于哈希值切换模板部分
- 哈希值和后退/下一步按钮
- javascript哈希值验证
- Angular $parse在过滤/排序以整数开头的哈希值时出错
- 登录时比较哈希值时出错