密码哈希在开发和实时服务器上有所不同

时间:2012-09-12 09:13:34

标签: php

我刚刚安装了xampp,所以我可以离线测试我的网站。现在我得到了许多未定义的索引或未定义的变量错误,我知道如何修复。现在登录在线工作,但使用xampp它不起作用。代码没有错。我在线导入数据库到离线。我已经指出了什么是错的,但不知道如何解决它。

这里是我测试登录详细信息是否正确的代码。

$Blowfish_Pre = '$2a$05$';
$Blowfish_End = '$';
$hashed_password = crypt($password, $Blowfish_Pre . $salt . $Blowfish_End);

//check to see if they match
if ($username==$dbusername&&$hashed_password==$dbpassword){

离线帐户的回复$hashed_password$2a$05$CEDaiUETMOTuZ1tzSX1dW.1rmbYfiu1Hf6jnZyJ5DouQOIHEPwXiW

在线,帐户的回复$hashed_password

$2J7rPSsTYb1Q

我已经确定crypt在网上的工作方式不同然后才能脱机?为什么这样,我该如何解决?

2 个答案:

答案 0 :(得分:4)

crypt()使用不同的哈希算法,具体取决于系统提供的内容。从PHP 5.3开始,它包含自己的实现,如果系统缺少对一个或多个算法的支持,将使用它。"

您的离线版本确实使用了您在开始时$2a$看到的河豚。您的在线版本确实使用了一些后备。

请参阅:http://php.net/manual/en/function.crypt.php

答案 1 :(得分:0)

我无法评论..但是,我把这个答案放在希望我可以节省一些人的时间。 我问了同样的问题,所选择的答案让我得到了解决方案。但由于它没有提供我的终极解决方案,我想我会分享以节省时间。

我的wamserver是PHP 5.38 我发现我的生产服务器是5.2x 我只是让他们把我升级到最新版本,即5.4.22 ......这就解决了这个问题。相同的代码再次开始出现60个字符的哈希值。

所以我敢打赌,如果你有同样的事情,升级服务器直到最新版本的PHP或超过5.3的东西,你应该是好的。