我正在使用密码加密,在将密码写入数据库时​​以及尝试登录该页面时遇到了一些麻烦。

当我输入密码时:

$pword = "huuhaa";
$uname = "huuhaa";

$pword = hash('sha256' ,'$pword');
    $insuser="INSERT INTO words(username,password) VALUES('$uname','$pword') ";

$insresult=mysql_query($insuser);


在登录中:

$myusername= 'huuhaa';

$mypassword = 'huuhaa';


$mypasswordCRYPTED = hash('sha256' ,'$mypassword');


$sql="SELECT userid FROM words WHERE username='$myusername' and password='$mypasswordCRYPTED'";


登录:

数据库中的值与登录名中的值不同,例如。数据库中的$ pword:e5f252f ...并登录:$ mypasswordCRYPTED = as89dw ....

有人可以向我解释一下吗?

谢谢

最佳答案

您不想要:

$pword = hash('sha256', $pword);




$mypasswordCRYPTED = hash('sha256', $mypassword);


即变量而不是字符串'$pword'?本来可以使用"$pword"使用双引号来使PHP执行字符串插值,但是将变量本身用作函数参数要清楚得多。

因此,基本上,您正在比较字符串'$ pword'和'$ mypassword'的哈希值-毫不奇怪,它们是不同的:)

09-28 04:24