为什么我从 Mac 的 shasum 获得的结果与其他 shasum 计算器获得的结果不同?

为什么我从 Mac 的 shasum 获得的结果与其他 shasum 计算器获得的结果不同?

我正在输入:

appletree:~ somename$ shasum -a 512 <<< test

输出为:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

然后我去一些在线哈希生成器并输入“测试”。他们的答案是:

http://hashgenerator.de/

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

http://passwordsgenerator.net/sha512-hash-generator/

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

因此在线生成器同意。我在 Mac 控制台命令中缺少什么?

我读了这些man页面。我看到它是使用 Perl 库实现的。但是,我认为 sha512 是一个独特的名称,所以我必须深入研究。


似乎有一个重复的问题:为什么我的命令行哈希与在线 MD5 哈希结果不同?虽然另一个问题也处于同样的上下文中,即意外的空格,但它出现在一种不同的情况中。

  • <<<这里是字符串,并且有一个设计选择此处的字符串如何添加换行符。
  • echo 'bla' |表示管道,它调用子 shell,并且还提供了如何处理换行符的参数。在这里,你似乎必须考虑shell 版本

答案1

shasum问题中调用的输入是test\n(带有换行符),而不是test

如果您test不给出换行符,shasum您将获得与所引用的在线工具相同的输出:

$ echo -n "test" | shasum -a 512
ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff  -

顺便说一句,我认为shasum在 MacOS 上发现的任何东西都不是 MacOS 特有的;我认为shasum它是标准 Perl 发行版的一部分 — — 与命令一起安装perl

答案2

尝试这个:

hexdump -C <<< test

了解 Unix shell 后,您可能会在该字符串末尾看到不想要的 0x0a。

相关内容