Php 使用crypt作为密码哈希并比较值?

Php 使用crypt作为密码哈希并比较值?,php,comparison,crypt,Php,Comparison,Crypt,我决定使用crypt()在数据库中使用salt加密我的密码,因为经过大量研究,这似乎是最好的选择 但我很好奇,为什么这会起作用并得到匹配: $info['password'] == crypt($_POST['password']) 与此相同的比较不会: $info['password'] === crypt($_POST['password']) 有什么想法吗 谢谢。解释了你正在经历的现象。第二个参数说明: 散列所基于的可选salt字符串。如果未提供,则行为由算法实现定义,并可能导致意外结

我决定使用crypt()在数据库中使用salt加密我的密码,因为经过大量研究,这似乎是最好的选择

但我很好奇,为什么这会起作用并得到匹配:

$info['password'] == crypt($_POST['password'])
与此相同的比较不会:

$info['password'] === crypt($_POST['password'])
有什么想法吗

谢谢。

解释了你正在经历的现象。第二个参数说明:

散列所基于的可选salt字符串。如果未提供,则行为由算法实现定义,并可能导致意外结果

运行以下操作时,很可能会得到10个不同的值:

<?php
$string = "password";
for ($i = 0; $i < 10; $i++) {
    echo crypt($string) . "\n";
}
$1$sWCzgR2e$vjR1CagStx0QbRYy/VbWm.
$1$C5TexeGI$ifWZ3mhGKthQ.ZW1UEswl/
$1$miA.EAYy$A6amxA.B4HvebndP/2ydx1
$1$izL6b3lz$hKncuA4oGv.8DAlAcybm..
$1$EqPefzSc$1XvQFf7pqFeuFz68lA1tv0
$1$njFWwWUo$NeQxtRHyUUzivVhidQSt5/
$1$LH3CVBV1$IIPPuHPUNL04ODtuRw0WR0
$1$/K75BwgK$MhSmhXtXF9Gn6ujx3YgE30
$1$OfddZpSQ$4u.dgsAWe4M/bOerUYTxr0
$1$G6JPvJpQ$aGvHluWRSy659MUe9P/aN.
我建议使用数据库salt作为
crypt($password,$salt)
调用的第二个参数。

运算符“==”检查两个变量是否具有相同的值,“==”运算符测试变量是否具有相同的值和类型:

所以 1==“1”为真
1==“1”不是真的

在第一个语句中,您是
=
赋值而不是比较
=
。这是打字错误吗?不是。阅读问题,它们都是字符串: