【问题标题】:suitable output of hexdump in bash to be input of hex2bin function in phpbash 中 hexdump 的合适输出作为 php 中 hex2bin 函数的输入
【发布时间】:2013-06-19 12:12:52
【问题描述】:

一个简单的例子,什么是 bash 中hexdump 的合适输出(需要什么选项)以使其适合作为 php 中 hex2bin 函数的输入!
P.S:我正在使用它通过网络服务流式传输证书(由 OpenSSL 命令制作)。
我已将 PHP 更新到 5.4.0 并且我正在使用 CentOS 6

【问题讨论】:

    标签: php bash centos hexdump


    【解决方案1】:

    解决办法是去掉bash输出的空格 在 bash 中:

    res=`xxd -p $exportedkey`
    echo "${res//[[:space:]]/}"
    

    在 php 中:

    $hex = hex2bin($result);
    header("Content-Description: File Transfer");
    header("Content-Type: application/octet-stream");
    header("Content-Transfer-Encoding: binary");
    header("Content-Disposition: attachment; filename=hex.pfx");
    header('Content-Length: '.  strlen($hex));
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    
    echo $hex;
    exit();
    

    希望这可以帮助其他有同样问题的人。

    【讨论】:

      【解决方案2】:

      hexdump -e '1/1 "%02x"' 可以解决问题。

      附:为了避免对 hexdump 二进制文件的额外依赖,您可能需要考虑为此使用 php,并编写一个从标准输入读取并通过 bin2hex() 写出的短循环。

      【讨论】:

      • 此命令的输出与 hex2bin 不符。没有错误或警告,也没有输出。我不得不按照这个顺序调用单独的 bash 代码,该代码处理服务器上的文件、Web 服务和 PHP 接口,它只处理 WS 响应。
      猜你喜欢
      • 2018-04-14
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 2022-08-18
      相关资源
      最近更新 更多