我需要在旧服务器上传输一些哈希密码。 旧服务器有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/
答案 0 :(得分:2)
旧服务器使用SHA256算法创建哈希值,但新服务器似乎不支持它;换句话说,常量CRYPT_SHA512
是0
。
根据新服务器上PHP的安装方式,您可能需要检查libcrypt
是否足够新,或者联系提供服务器的托管公司。