当前位置: 首页 > 知识库问答 >
问题:

OpenSSL和PHPSA256摘要有所不同

阎鹏
2023-03-14

我试图使用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)

我不确定问题出在哪里。

共有2个答案

方弘
2023-03-14

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

openssl dgst -sha256 -binary test.js | ...
公良安邦
2023-03-14

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

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

 类似资料:
  • 我正在寻找所有JavaEE技术堆栈的清晰描述。 我认为有很多像我这样的人在很多网站/教程中搜索,但没有找到一个精确的列表,列出哪些是JavaEE中使用的技术,它们有什么好处。 我希望有人能简单而友好地澄清,对所有社区都有好处。

  • 我正在尝试用签署现有的摘要。 假设我已经有了一个摘要“mydigest”。尽管如此,我不想使用: 我有ECDSA而不是rsa,所以我假设我不应该使用<code>rsautl</code>它按原样使用输入。 所以我的假设是,我需要一些东西来按原样(mydigest)输入,并用我的ECDSA私钥签名。 我尝试了以下方法,以查看使用不同哈希算法创建的哈希大小是否对符号结果有任何影响: 和 但就输出长度而

  • 实验概要 这一章的实验指导中,你将会学到: 单独生成 ELF 格式的用户程序,并打包进文件系统中 创建并运行用户进程 使用系统调用为用户程序提供服务

  • 实验概要 这一章的实验指导中,你将会学到: 设备树的概念和读取 virtio 总线协议 块设备驱动的实现 将块设备托管给文件系统

  • 实验概要 这一章的实验指导中,你将会学到: 线程和进程的概念以及运行状态的表示 线程的切换 对 CPU 进行抽象在上面完成对线程的调度

  • 实验概要 这一章的实验指导中,你将会学到: 虚拟地址和物理地址的概念和关系 利用页表完成虚拟地址到物理地址的映射 实现内核的重映射