PHP crypt函数据说有这样的返回值:
"Returns the hashed string or a string that is shorter than 13 characters and is
guaranteed to differ from the salt on failure."
我不明白这是什么意思…我已经基本理解了这个函数是如何工作的,但我想知道如何解释返回值,并试图理解何时发生这种情况。这是目前为止PHP手册中最模糊的解释之一,也许我只是看了太长时间才看不清…?:) crypt文档中提到的一件事:
(5.3.2)修复了Blowfish在无效轮询时返回"失败"字符串("*0"或"*1")的行为,而不是回落到DES。
显然,crypt
在失败时可以返回不同的[未指定的]短字符串。我怀疑"或"位是为了说明"与盐不同"。
以这种方式,字符串"少于13个字符"(谁知道是什么)->失败。唯一记录在案的案例与无效的河豚鱼选项有关,但将来可能会扩大。(虽然没有在文档中,但bug #64449指出,每当salt无效时,应该为算法返回"失败"。)
不返回盐的原因可能与错误#55439:
有关。如果使用MD5盐执行crypt(),则返回值仅由盐组成。
结果是$valid = crypt($pw, $crypt);
为TRUE,对于任意$pw
还有,有人知道如何找到特定PHP版本的点文档吗?看看" different from the salt"从句是什么时候加进去的,会很有趣。