【问题标题】:PHP crypt() returns *0 failure string in version 5.6.4, but not 5.4,PHP crypt() 在版本 5.6.4 中返回 *0 失败字符串,但不是 5.4,
【发布时间】:2015-03-21 20:41:16
【问题描述】:

echo crypt('test', "$2a$07$"); 在 PHP 版本 5.4.16 中生成长哈希,但在 5.6.4 中生成“失败字符串”*0

阅读 crypt() 上的 PHP 文档,我仍然不太清楚为什么,尽管根据具体情况,变更日志提到返回 *1 而不是 *0。 (http://php.net/manual/en/function.crypt.php)

在这种情况下返回*0 的原因是什么? PHP 超过 5.4 是否停止容忍 $2a$07$ 形式的坏盐?

【问题讨论】:

    标签: php crypt php-5.4 php-5.6


    【解决方案1】:

    Blowfish 定义说您必须在第三个$ 之后定义一个字符串。

    <?php
    echo crypt('test',  "$2a$07$mystring");
    ?>
    

    使用盐的 Blowfish 散列如下:“$2a$”、“$2x$”或“$2y$”、两位数的成本参数、“$”和字母表中的 22 个字符“./0- 9A-Za-z"

    如果您不定义该字符串,则会收到错误 *0

    5.6.5 当失败字符串“*0”作为盐给出时,现在将返回“*1”以与其他加密实现保持一致。在此版本之前,PHP 5.6 会错误地返回 DES 哈希。

    【讨论】:

    • 我读了十遍(甚至在我的问题中与它相关联),但由于某种原因它没有坚持下去。呃。谢谢。
    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 2017-08-14
    • 1970-01-01
    • 2012-11-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    相关资源
    最近更新 更多