我决定使用crypt()来加密我的数据库中的密码,因为经过大量研究后,它似乎是最好的选择。使用crypt作为密码哈希和比较值?
我很好奇,不过,为什么这个工程,并获得匹配的位置:
$info['password'] == crypt($_POST['password'])
而且同样比较像,这并不:
$info['password'] === crypt($_POST['password'])
任何想法?
谢谢。
我决定使用crypt()来加密我的数据库中的密码,因为经过大量研究后,它似乎是最好的选择。使用crypt作为密码哈希和比较值?
我很好奇,不过,为什么这个工程,并获得匹配的位置:
$info['password'] == crypt($_POST['password'])
而且同样比较像,这并不:
$info['password'] === crypt($_POST['password'])
任何想法?
谢谢。
The documentation解释你正在经历的现象。第二个参数文档指出:
一个可选的盐字符串,用于散列。如果未提供,则该行为由算法实现定义,并可能导致意外的结果。
有每一个机会,当你运行下面你会得到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.
我建议你使用你的数据库盐你的crypt($password, $salt)
电话的第二个参数。
运算符“==”检查是否两个变量具有相同的值和“===”操作测试,看看变量具有相同的值和类型: http://nz.php.net/manual/en/language.operators.comparison.php
所以 1 ==“1”为真 1 ===“1”不正确
在第一个语句中,您是'='赋值而不是比较'=='。这是错字吗? – 2011-04-16 10:45:51
是的。编辑。我的错。 – Basic 2011-04-16 10:47:21