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


13

我输入:

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

输出为:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

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

http://hashgenerator.de/

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

因此,在线发生器对此表示赞同。Mac控制台命令中缺少什么?

我正在阅读man页面。我看到它是使用Perl库实现的。但是,我认为sha512将是一个唯一的名称,因此我必须更深入地研究。


似乎有一个重复的问题:为什么我的命令行哈希与在线MD5哈希结果不同?。虽然另一个问题是在相同的上下文中,这是意外的空白,但是它是从不同的情况出现的。

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

非常感谢sideshowbarker和Spiff。空格再次触击^^ ^^
peter_the_oak


请注意,here字符串旨在与单行here文档完全相同,并且here文档始终以换行符结尾。
chepner '17

我对Shell并不陌生,但是这里是一些复杂的细节和新闻,对此我深表感谢。因此,感谢您的所有评论和答复。
peter_the_oak

因此,我们发现Mac的shasum命令没有什么不同。从技术上讲,问题是用户错误,并且与传递的数据有关,而不与程序有关。我是否可以建议将问题重命名为“为什么我的Mac的阴影效果不同?”这样,人们可以立即怀疑用户创建的问题。(我已经知道,我现在可能不太愿意检查此问题。如当前标题为“是什么从其他shasum计算器分发了mac shell shasum?”,我来这里是为了了解Mac特定的可能差异,这实际上不是最终结果
TOOGAM

Answers:


32

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

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

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

顺便说一句,我认为在MacOS上shasum发现的东西没有什么特别的或MacOS特有的。我认为它shasum是标准Perl发行版的一部分,与perl命令一起安装。


19

尝试这个:

hexdump -C <<< test

了解Unix shell,在该字符串的末尾可能会得到一个不需要的0x0a。


2
od将标记控制字符并使其更加明显;尝试:( od -t a -t x1 <<< test从未真正使用过的hexdump),
toddkaufmann
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.