include 'lib/php/PasswordHash.php';
$hash = $_GET['hash'];
$pass = $_GET['pass'];
$hasher = new PasswordHash(8, false);
$pass = $hasher->HashPassword($pass);
echo "Original:<br>" . $pass . "<br>";
$checked = $hasher->CheckPassword($pass, $hash);
echo "Hashed:<br>" . $checked . "<br>";
echo "<br>";
echo "Are they equal? <b>";
if($pass == $checked){ echo "Yep!</b>";} else{
echo "Nope. </b>";
}
上面的令人難以置信的簡單的代碼根本不工作。是的,pass變量被散列並正確輸出,但CheckPassword()根本沒有輸出任何東西。我已經測試了一個簡單的單詞「hello」,並將它們直接插入到函數中(例如CheckPassword('$ 2 ...','$ 2 ...');並且它仍然不輸出任何內容。在XAMPP Windows上,我剛剛被迫斷定必須是這個問題,我用這個代碼而不是實際的項目來刪除數據庫,並且發現了這個問題PHPass拒絕檢查哈希
試圖限制你自己嘔吐在代碼的醜陋,但它是一個絕望的嘗試讓它的工作
如果你自己運行這個代碼,你需要把'通'和'哈希'GET變量在URL中測試這個,很可能我做了一個糟糕的事情在某個地方犯錯,所以我對自己的環境毫無自信。
編輯:
我用下面的代碼生成初始變量
$hash = $_GET['hash'];
$hasher = new PasswordHash(8, false);
$hash = $hasher->HashPassword($pass);
echo $hash;
'CheckPassword'中的'$ pass'必須是明文,不是嗎? – zerkms
我所做的編輯顯示了我如何生成單詞'hello'的散列,然後將其放入頂部的代碼的URL – SacredSkull