web-dev-qa-db-ja.com

Linuxコマンドラインからsha256を生成する

文字列 "foobar"がSHA 256ハッシュc3ab8ff13720e8ad9047dd39466b3c8974e592c2fa383d4a3960714caef0c4f2を使って http://hash.online-convert.com/sha256-generator を生成することを私は知っています

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

hendry@x201 ~$ echo foobar | sha256sum 
aec070645fe53ee3b3763059376134f058cc337247c978add178b6ccdfb0019f  -

異なるハッシュを生成します。何が足りないの?

206
hendry

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

echo -n foobar | sha256sum
307
mvds

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

echo -n "foobar" | openssl dgst -sha256

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

89
Farahmand

コマンドsha256sumが利用できない場合(例えばマーベリックスで)、あなたは使うことができます:

echo -n "foobar" | shasum -a 256

39
Sucrenoir

echo -nは機能し、大量の歴史的な使用法のために消えることはほとんどありませんが、 POSIX標準 の最近のバージョンでは、新しい適合アプリケーションは " printf "の使用を推奨します。

28
Nicholas Knight

echoは末尾の改行を出力すると思います。改行をスキップするためにechoするパラメータとして-nを使用してみてください。

7
Thomas Owens

echoは末尾の改行文字も生成し、それもハッシュされます。試してみてください。

/bin/echo -n foobar | sha256sum 
7