간단한 로그인 시스템을 만들고 있는데, 암호가 sha256을 사용하고 데이터베이스에 임의의 숫자를 사용하여 소금을 저장합니다. 그러나 내가 로그인하려고하면 해시를 비교할 때 실패합니다. 왜 누군가는 볼 수 있습니까?로그인 할 때 해시를 비교할 때 오류가 발생했습니다.
<?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();
Heres는 내 통과 해시 방법
// 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);
?>
오류를 작성하실 수 있습니까? – Anri
그냥 암호를 찾을 수 없다고 생각합니다 –
또한 동일한 저장 방법이 사용되었는지 확인하십시오. mysql_fetch_array 대신 mysql_fetch_row를 사용하십시오. –