LinuxコマンドラインからのSHA-256ハッシュの生成


234

文字列「foobar」は、http://hash.online-convert.com/sha256-generatorc3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2を使用してSHA-256ハッシュを 生成することを知っています

ただし、コマンドラインシェル:

hendry@x201 ~$ echo foobar | sha256sum
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

別のハッシュを生成します。何が欠けていますか?


4
sha256sum < foobarcatechoprintfなどの必要はありません
koppor 2016

7
@kopporはと< foobar同じではありませんecho foobar |。と同等ですecho foobar |sha256sum <<< foobar、これはと同じようにfoobarに改行を追加しますecho
mvds 2017

openssl dgst -sha256 foobarMacOS High Sierraでは動作しますecho -n foobar | openssl dgst -sha256が、間違った答えを出しました。
auspicious99

回答:


362

echo通常は改行を出力しますが、これはで抑制され-nます。これを試して:

echo -n foobar | sha256sum

76
注:OS X(BSD)に、それはだecho -n foobar | shasum -a 256
Olie

6
printf;)を使用してください
dylnmc

11
OSXで、エイリアスを作成することが便利かもしれません:alias sha256sum='shasum --algorithm 256'
ジョナサン・クロス

1
なぜそれが*-で終わるのですか
Philip Rego 2017年

2
@PhilipRegoこれは標準入力の入力のシャサムなので、ファイル名の代わりに出力-されます。
mvds 2017年

100

をインストールしている場合はopenssl、以下を使用できます。

echo -n "foobar" | openssl dgst -sha256

他のアルゴリズムのために、置き換えることができる-sha256-md4-md5-ripemd160-sha-sha1-sha224-sha384-sha512または-whirlpool


sha512で必要なラウンド数を指定する方法はありますか?私はそれを見て、それを見つけることができず、あなたが知っているかどうか疑問に思いましたか?
f1lt3r 2017年

1
@AlistairMacDonald-あなたが何を探しているのか正確にはわかりません。私の知る限り、SHA512は80ラウンドを必要とします。関数を操作したい場合、それはもはやsha512ではありません。ところで、crypto.stackexchange.comで質問を検索/質問できます。
Farahmand 2017年

3
受け入れられた回答とは異なり、これはMacOSで機能します。
weefwefwqg3

45

コマンドsha256sumが使用できない場合(Mac OS X v10.9(Mavericksなど))、次のコマンドを使用できます。

echo -n "foobar" | shasum -a 256


1
いいね!これを.bash_profile関数に追加しましたsha256(){echo -n "$ *" | shasum -a 256}そして次のように呼び出します:〜$ sha256 foobar
rbento

受け入れられた回答とは異なり、これはMacOSで機能します
weefwefwqg3

それとも、Ubuntu 10.10(Maverick Meerkat)ですか?( 's'なし、マーベリック)。これは2010年にリリースされたのに対し、Mac OS X v10.9はこの回答の1か月前にリリースされました。
Peter Mortensen、

29

echo -nは機能しており、過去の大規模な使用法によって消えることはほとんどありませんが、POSIX標準の最近のバージョンで、新しい準拠アプリケーションは「使用するように奨励されていますprintf」。



7

echo末尾の改行が出力されると思います。-nエコーのパラメータとして使用して、改行をスキップしてみてください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.