【问题标题】:php blowfish hashing with crypt(): the CLI result differs from webserver's one使用 crypt() 的 php 河豚散列:CLI 结果与网络服务器的结果不同
【发布时间】:2014-10-01 07:00:40
【问题描述】:

当我使用 php 函数 crypt() 使用 Blowfish 算法与网络服务器

<?php

    echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));

我得到这个结果:

$2a$10$7711cbpe58dfpogiu0498u5Vh773A3qx.3LE3ro3NX7F9c9N7.pOm

但如果我使用 PHP 解释器 带命令行

php -r "echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"

我得到另一个结果:

a0SqNHxQ8/2mA

你有什么想法吗?

系统是: Apache/2.2.3 (CentOS), PHP 版本 5.4.26

【问题讨论】:

    标签: php blowfish crypt


    【解决方案1】:

    这是因为您的命令字符串中带有以下数字的美元符号在 bash 中也被解释为 positional parameters

    当你逃避它们时,它会按预期工作:

    $ php -r "echo crypt('SAD123', sprintf('\$2a\$10$%s', '7711cbpe58dfpogiu049857f011werb0'));"
    

    因此,当您想在命令行中修改一些 PHP 时,您应该以交互方式运行它:

    $ php -a
    php > echo crypt('SAD123', sprintf('$2a$10$%s', '7711cbpe58dfpogiu049857f011werb0'));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-23
      • 2011-01-22
      • 2020-02-14
      • 2014-01-26
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多