【问题标题】:SHA-256 Differing ResultsSHA-256 不同的结果
【发布时间】:2016-08-03 11:56:26
【问题描述】:

我会尽力描述我的困境。

我正在编写一个 python 脚本,它将获取一个输入文件并对其执行 SHA-256 哈希。

如果我获取原始二进制图像并通过命令提示符运行它(在我的 Mac 上:shasum -a 256 somefile.bin),我会得到“正确”的摘要:'bda1ca...'

我已经通过在线计算器运行了这个二进制文件并得到了相同的结果。

如果我在十六进制编辑器中打开此哈希,将所有字节提取到剪贴板并将它们粘贴到 SHA256 计算器中,我会得到不同的结果:'689035...'

我在这里缺少什么?我试过上/下现金,每个字节之间的空格。我不确定还能尝试什么。

这个问题开始是因为我在 Python 中实现它,但在我担心代码之前,我试图理解为什么会有所不同。

【问题讨论】:

  • 我将选择 dvxam 的答案为正确的。实际上,我的 python 脚本是正确的,但我是根据某人的错误指令来乱序读取文件的!但是,dvxam 解释得足够透彻,我现在明白了。
  • 如果您使用echo,请注意换行! echo "hi" | shasum --algorithm=256 98ea6e4f216f2fb4b69fff9b3a44842c38686ca685f3f55dc48c5d3fb1107be4 -echo -n "hi" | shasum --algorithm=256 8f434346648f6b96df89dda901c5176b10a6d83961dd3c1ac88b59b2dc327aa4 -

标签: sha256 sha rsa-sha256


【解决方案1】:

当您在键盘上从十六进制编辑器中复制“字节”时,您很可能只是在复制它的字符串表示形式。

也许这些命令会帮助你得到它:

$ echo "Hello, world" > my_bin

$ shasum -a 256 my_bin
37980c33951de6b0e450c3701b219bfeee930544705f637cd1158b63827bb390  -


$ cat my_bin | shasum -a 256
37980c33951de6b0e450c3701b219bfeee930544705f637cd1158b63827bb390  -

$ cat my_bin | xxd -p | shasum -a 256
0e535a1a279db9753bcbc226b9305e6e6a39ba2d866c01a44cb9aac8d5fc9833  -

(xxd是一个十六进制编辑器,我用来显示文件内容)

【讨论】:

  • 谢谢,我明白了。解决方法是什么?例如 - 我正在执行 SHA256 的二进制文件是较大二进制文件中的一小部分。如果我对较小的二进制文件进行 SHA256 处理,我会得到一个结果,但如果我只是将这些值“读取”到我的 python 脚本中,我会得到另一个结果。
猜你喜欢
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 2012-11-19
  • 2012-08-09
  • 1970-01-01
相关资源
最近更新 更多