OpenSSL 和 PHP SHA256 摘要不同
OpenSSL and PHP SHA256 digests differ
我正在尝试使用 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)
我不确定问题出在哪里。
cat
正在添加一个额外的换行符,它会在摘要中出现。直接尝试 运行 文件摘要:
openssl dgst -sha256 -binary test.js | ...
感谢 Twitter 上的一些支持,我最终找到了问题。
用nano编辑JS文件时,会在末尾追加一个换行符。使用 nano -L test.js
编辑文件解决了该问题。
我正在尝试使用 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)
我不确定问题出在哪里。
cat
正在添加一个额外的换行符,它会在摘要中出现。直接尝试 运行 文件摘要:
openssl dgst -sha256 -binary test.js | ...
感谢 Twitter 上的一些支持,我最终找到了问题。
用nano编辑JS文件时,会在末尾追加一个换行符。使用 nano -L test.js
编辑文件解决了该问题。