5

在从 Zend Server CE 5.1 升级到 Zend Server CE 5.5 的过程中,PHP 也从 5.3.5 升级到了 5.3.8。在此转换之后,我正在处理的 Zend 应用程序的登录功能突然中断。

尝试调试它,看起来它的实现crypt()不反映 PHP 手册,或者我误解了它。如果我大胆猜测,那就是后者。

我使用 16 个字符长的盐作为使用 SHA256 的较大盐的一部分,该盐用作 PHP 手册中的示例。

$password = //string entered at login
$salt = '$5$rounds=250000$1234abcd5678defg$';

在我对输入的密码进行哈希处理后

$hash = crypt($password, $salt);

我得到一个这样的字符串作为返回值:

$5$rounds=250000$1234abcd5678$tI.Oiz.YwWjIwT3K.SLU8SwUZ9J0/odBCkbE6t0igeB

让我感到困惑的是,16 个字符的盐,即较大部分的一部分(上面的1234abcd5678defg),现在被截断为 12 个字符。

这是预期的吗?该crypt()函数现在似乎也返回了与以前不同的结果——这在 PHP 版本之间是常见的吗?更新日志中没有任何内容表明对加密算法有任何根本性的改变。

4

1 回答 1

2

这是我从 Zend 收到的回复:

感谢您的反馈。您报告的问题被视为错误。开发人员将提供一个修复程序,该修复程序将包含在该产品即将发布的版本之一中。

于 2011-10-20T08:36:09.620 回答