crypt()函数在不同的服务器上返回不同的结果大小

时间:2014-11-14 09:38:54

标签: php password-encryption

我需要在旧服务器上传输一些哈希密码。 旧服务器有php 5.4.4和crypt()函数,密码返回一个102字符的字符串。 我的新服务器有php 5.5.7,crypt函数返回34个字符的字符串。 在两个服务器上,不带参数调用crypt

crypt($password);

在用户登录时(在旧服务器上)我使用此代码:

crypt($_POST['password'], $hash_password) == $hash_password

现在,如果我将哈希密码复制到新托管,我调用该方法检查密码是否正确,密码永远不会匹配。 如何对不同的服务器进行相同类型的散列处理?

这是两个加密密码的示例:

旧服务器上的

$6$kcPF.fPojej2$YF5Ui0nP8t5Wc0JVVEI9.JD2l/ZyLQGL6T5RN3E5oz3GGiSZoTBsbocMggLkdlBhO6Xe7cGdepW7bo6mKFjYx1                                                            

在新服务器上

$1$Sz1cDmU0$Z0uoEwnXH1NokqPwwQJsp/

1 个答案:

答案 0 :(得分:2)

旧服务器使用SHA256算法创建哈希值,但新服务器似乎不支持它;换句话说,常量CRYPT_SHA5120

根据新服务器上PHP的安装方式,您可能需要检查libcrypt是否足够新,或者联系提供服务器的托管公司。