【问题标题】:OpenSSL and PHP SHA256 digests differOpenSSL 和 PHP SHA256 摘要不同
【发布时间】:2015-10-27 16:17:53
【问题描述】:

我正在尝试使用 OpenSSL 和 PHP 在命令行中计算某些 JavaScript 的 base64 编码的 sha256 哈希值。

cat test.js | openssl dgst -sha256 -binary | openssl enc -base64
(p5CrWBV6O1Xp7BlWwdVXTeGeSx3uo/IsNaYOIOblAZk=)

echo base64_encode(hash("sha256", "alert('Test');", true));
(2D7QyY5W4ziVZhF/vzeGy8oHgnz4TjqaoifV41mHi3c=)

得到的base64编码值不一样,但是每个方法的输入是一样的。退后一步,sha256 哈希摘要在 base64 编码之前不匹配。

cat test.js | openssl dgst -sha256
(a790ab58157a3b55e9ec1956c1d5574de19e4b1deea3f22c35a60e20e6e50199)

echo hash("sha256", "alert('Test');");
(d83ed0c98e56e3389566117fbf3786cbca07827cf84e3a9aa227d5e359878b77)

我不确定问题出在哪里。

【问题讨论】:

    标签: php openssl base64 sha256


    【解决方案1】:

    感谢 Twitter 上的一些支持,我最终找到了这个问题。

    使用 nano 编辑 JS 文件时,它在末尾附加了一个换行符。使用nano -L test.js 编辑文件解决了这个问题。

    【讨论】:

      【解决方案2】:

      cat 正在添加一个额外的换行符,这将在摘要中进行。尝试直接在文件上运行摘要:

      openssl dgst -sha256 -binary test.js | ...
      

      【讨论】:

      • cat 在输出后不添加换行符
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-17
      • 1970-01-01
      • 2012-11-16
      • 2022-12-12
      • 2018-06-14
      • 2021-10-08
      相关资源
      最近更新 更多