gpt4 book ai didi

php - 注册时的哈希密码与登录密码不同

转载 作者:行者123 更新时间:2023-11-29 13:51:24 26 4
gpt4 key购买 nike

我有一个注册页面,允许用户插入密码。我在注册时对密码进行哈希处理,以便更安全地存储在数据库中。

当用户使用相同的密码登录时,两个哈希值不匹配,用户无法登录。

这是我第一次使用哈希,它的表现并不符合我的预期:

这是注册页面上的哈希代码:

$salt ="";     
function cryptPass($input, $rounds = 9)
{
$salt = "";
$saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9'));
for($i = 0; $i<22; $i++)
{
$salt .=$saltChars[array_rand($saltChars)];
}
return crypt($input, sprintf('$2y$%02d$test$', $rounds) . $salt);
}
$hashedpass = cryptPass($pass1);
echo $hashedpass;
//************Insert all the members's input to the database**************************//
$query = mysql_query("INSERT INTO members(user_name, first_name, last_name, governorate, district, village, birth_date, email_address, specialization, password, salt, registered_date )VALUES('$username', '$firstname', '$lastname', '$governorate', '$district', '$village', '$bdate', '$email', '$specialization', '$hashedpass', '$salt', now())")or die(mysql_error());

我确实加了盐,但它是空的

这是登录页面上的哈希代码

function cryptPass($input, $rounds = 9)
{
$salt = "";
$saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9'));
for($i = 0; $i<22; $i++)
{
$salt .=$saltChars[array_rand($saltChars)];
}
return crypt($input, sprintf('$2y$%02d$test$', $rounds) . $salt);
}
$hashedpass = cryptPass($pass);
echo $hashedpass;


$sql=mysql_query( "SELECT user_id, email_address, first_name, user_name FROM members WHERE email_address='$email'AND password= '$hashedpass' LIMIT 1") or die("error in members table");
$login_check = mysql_num_rows($sql);

if($login_check > 0)the hashing password = $2y$09$test$4ZGgCiXdKzgQvuzwu.AxfdWvZadDCE.LD6HCkrK3ZsqJeN7e

最佳答案

当用户注册时,您需要将盐和散列密码存储在数据库中。当用户尝试登录时,您需要使用与注册时相同的盐,否则哈希值将会不同。这称为每用户盐,是更安全的选项。

一个更简单但安全性较低的选项是为应用程序生成单个盐值并将其用于所有用户。这将具有将所有密码散列保存在数据库中的效果,但安全性要低得多,因为如果该盐值受到损害,那么暴力破解散列密码就很简单了。

关于php - 注册时的哈希密码与登录密码不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16632413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com