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 上运行,我刚刚被迫得出结论,这一定是问题所在。我使用此代码而不是实际项目来删除数据库作为一个因素,并发现了这个问题。
试着克制自己不要因为代码的丑陋而呕吐,但这是让它工作的绝望尝试。
如果您自己运行此代码,则需要在 URL 中放置一个“pass”和一个“hash”GET 变量来测试它。很可能我在某个地方犯了一个可怕的错误,所以我完全没有信心责怪我的环境。
编辑:
我使用下面的代码生成要在 URL 中使用的初始变量
$hash = $_GET['hash'];
$hasher = new PasswordHash(8, false);
$hash = $hasher->HashPassword($pass);
echo $hash;