2011-08-25 96 views
0

我正在玩密码加密,当我将密码写入数据库以及当我登录到页面时遇到了一些麻烦。使用sha256密码问题

当我插入密码:

$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 ....

有人请给我解释一下吗?

谢谢

回答

4

难道你不想要的:

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

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

即变量而不是字符串'$pword'?它可以与"$pword"一起使用双引号来让PHP执行字符串插值,但是使用变量本身作为函数参数会更清晰。

所以基本上你比较字符串 '$ PWORD' 和 '$输入mypassword' 的哈希 - 这勿庸置疑是不一样的:)

+0

该死的jon,你快2秒:(好工作 – genesis

+0

PHP在双引号字符串中插入,而不是单引号字符串,该字符串实际上是“$ pword” – Phil

+0

@Phil:Thanks。Will update。(It's明显更清楚,不要打扰插值无论如何。) –

1

变化

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

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

因为第一个人认出你的密码为$pword

与第二可变

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

同样的事情

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

您哈希字符串'$mypassword',尝试将其更改为$mypassword和不断变化的'$pword'$pword