2011-08-25 80 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