web-dev-qa-db-ja.com

Macのシャスム計算結果が他のシャスム計算機と異なるのはなぜですか?

私は入ります:

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

そして出力は:

0e3e75234abc68f4378a86b3f4b32a198ba301845b0cd6e50106e874345700cc6663a86c1ea125dc5e92be17c98f9a0f85ca9d5f595db2012f7cc3571945c123  -

次に、いくつかのオンラインハッシュジェネレーターにアクセスして、「test」と入力します。彼らの答えは:

http://hashgenerator.de/

ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff

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

EE26B0DD4AF7E749AA1A8EE3C10AE9923F618980772E473F8819A5D4940E0DB27AC185F8A0E1D5F84F88BC887FD67B143732C304CC5FA9AD8E6F57F50028A8FF

したがって、オンラインのジェネレーターは同意します。 Macコンソールコマンドで何が欠けていますか?

manページを読んでいました。 Perlライブラリを使用して実装されているようです。ただし、sha512は一意の名称になると思うので、さらに深く掘り下げる必要があります。


重複する質問があるようです: コマンドラインハッシュがオンラインのMD5ハッシュ結果と異なるのはなぜですか? 。他の質問は予期しない空白である同じコンテキストにありますが、別の状況から出てきます。

  • <<<ここに文字列 であり、ここに文字列がどのように改行を追加するかについては デザイン選択 があります。
  • echo 'bla' |は、サブシェルを呼び出すパイピングを意味し、改行の処理方法に関する引数も持っています。 シェルバージョン を考慮する必要があるようです。
13
peter_the_oak

質問のshasum呼び出しへの入力はtest\n(改行付き)、testではありません。

testに改行なしでshasumを指定すると、引用したオンラインツールと同じ出力が得られます。

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

ところで、MacOSで見つかったshasumについては、特別なものやMacOS固有のものは何もないと思います。 shasumは標準のPerlディストリビューションの一部だと思います。たとえば、Perlコマンドとともにインストールされます。

32
sideshowbarker

これを試して:

hexdump -C <<< test

Unixシェルを知っていると、おそらくその文字列の最後に不要な0x0aが表示されます。

19
Spiff