了解PHP crypt()返回值



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"从句是什么时候加进去的,会很有趣。

相关内容

  • 没有找到相关文章

最新更新