OpenSSL和PHPSA256摘要有所不同

OpenSSL和PHPSA256摘要有所不同,php,openssl,base64,sha256,Php,Openssl,Base64,Sha256,我试图使用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/vzeGy8o

我试图使用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编码值不同,但每个方法的输入都相同。退一步,在base64编码之前,sha256哈希摘要不匹配

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

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

我不确定问题出在哪里。

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

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

多亏了推特上的一些支持,我最终发现了这个问题


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

cat
不在输出后添加换行符