Php 函数的作用是:在不同的服务器上返回不同的结果大小

Php 函数的作用是:在不同的服务器上返回不同的结果大小,php,password-encryption,Php,Password Encryption,我需要从旧服务器转移一些散列密码到新服务器上。 旧服务器有PHP5.4.4,密码上的crypt()函数返回102个字符的字符串。 我的新服务器有PHP5.5.7,crypt函数返回34个字符的字符串。 在这两台服务器上,调用crypt时不带参数 crypt($password); 在用户登录时(在旧服务器上),我使用以下代码: crypt($_POST['password'], $hash_password) == $hash_password 现在,若我将散列密码复制到新主机,并调用该方法

我需要从旧服务器转移一些散列密码到新服务器上。 旧服务器有PHP5.4.4,密码上的crypt()函数返回102个字符的字符串。 我的新服务器有PHP5.5.7,crypt函数返回34个字符的字符串。 在这两台服务器上,调用crypt时不带参数

crypt($password);
在用户登录时(在旧服务器上),我使用以下代码:

crypt($_POST['password'], $hash_password) == $hash_password
现在,若我将散列密码复制到新主机,并调用该方法检查密码是否正确,那个么密码永远不会匹配。 如何对不同的服务器进行相同类型的哈希

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

在旧服务器上:

$6$kcPF.fPojej2$YF5Ui0nP8t5Wc0JVVEI9.JD2l/ZyLQGL6T5RN3E5oz3GGiSZoTBsbocMggLkdlBhO6Xe7cGdepW7bo6mKFjYx1                                                            
在新服务器上

$1$Sz1cDmU0$Z0uoEwnXH1NokqPwwQJsp/

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


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

您是否检查了CRYPT\u BLOWFISH或CRYPT\u SHA256等常量的值(或您正在使用的相应值)看看是否有相同的算法可用?(你可以在手册页上看到它们)请给我们看一个旧的和一个新的哈希示例。我编辑了我的问题@vp_arth,我发现你忽略了我说的话,但也许其他人会发现这很有用:如果你检查两个哈希,你会看到一个以$6$(特定于sha512)开头,另一个以$1$(特定于md5)开头所以很明显,不同的算法是不同的used@mishu我没有忽视你的建议!我检查了php.ini文件,它们包含相同的加密算法。我现在注意到旧服务器上的所有密码都包含$6$value!现在我尝试改变haxsh算法