web-dev-qa-db-ja.com

端末で文字列のMD5ハッシュを直接取得する方法は?

端末から文字列の MD5 ハッシュを直接取得するにはどうすればよいですか?

たとえば、文字列abcdefgをハッシュ化する必要があります。現在、 md5sum コマンドは入力としてファイル名のみを受け入れます。次の行を入力するだけですべてが完了します。

md5sum abcdefg
output: ac54bcf346e578feb46888b3ecd2344f

どうすればそれを達成できますか?

187
Hamed Momeni

また、このようなことを言うことができます:

~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4  -

基本的に@enzotibの説明と同じことを行いますが、おそらく少し単純です。

250
jfmessier

非常にシンプルで、stdinを受け入れるため、

md5sum <<<"my string"

シェルによって追加される末尾の改行を回避するには:

printf '%s' "my string" | md5sum
61
enzotib
$ echo -n 123456 | md5sum | awk '{print $1}'
e10adc3949ba59abbe56e057f20f883e

シェルスクリプトを作成できます。

たとえば、スクリプト名はmd5.shです。

#!/bin/bash

echo   -n   $1 | md5sum | awk '{print $1}'

許可の実行:

 chmod +x md5.sh

次に:

$ md5.sh 123456
e10adc3949ba59abbe56e057f20f883e

システムがmacOSの場合。このスクリプトを変更する必要があります。

$ echo -n 123456 | md5 | awk '{print $1}' 
e10adc3949ba59abbe56e057f20f883e
27
ty4z2008
openssl md5 filename
openssl sha1 filename

エコーを使用したコンテンツの文字列パイプ

echo -n 123456 | openssl md5
10
guest

引数なしでmd5sumを実行すると、ターミナルから入力が読み取られます。必要なものを入力または貼り付け、完了したら、ctrl-dを押して入力を終了します。

10
psusi

--helpmd5sumを簡単に確認すると、コマンドが次のことを示しています。

md5sum -

次に、単純な入力のプロンプトが表示されます。テキストを入力してから使用する Enter その後 Ctrl+D ファイルの終わりを示すためにmd5sumが入力した生のテキストのMD5を吐き出します Enter、CR、IIRC)。

入力が少なく、配管なし!そして、シェルの履歴にプレーンテキストのパスワードが記録されるのを防ぎます!わー!

末尾のCRが必要ない場合(通常、パスワードをハッシュしたい場合)、ヒットしないでください Enter 前 Ctrl+D、 入る Ctrl+D 代わりに2回。

4
Will

私のスクリプトでは、この問題について知っておくべきことが2つあることがわかりました。

  • echo "$myvariable"を実行するかecho -n "$myvariable"を実行するかは関係ありませんが、常に文字列にdoubleqoutesを使用し、常に同じメソッドを使用する必要があります。そうでない場合、物事は一致しません。
  • 出力では、例に示すように、常に末尾のスペースとダッシュが表示されます。

    $ echo -n Welcome | md5sum
    7803ffcaea43bb81a439fde13b29bc35  -
    

それを取り除き、コード7803ffcaea43bb81a439fde13b29bc35のみを使用するには、echo "$myvariable" | md5sum | cut -d" " -f1を実行します。

2

これを行うには多くの例がありますが、明示的または暗黙的に改行を含むものとそうでないものがあるため、それらの一部は同等ではありません。

私は、どの一般的なメソッドに改行が含まれているか、含まれていないかを明確に指定したいと思います

ここに、md5ハッシュを計算するためのいくつかの例を示します。末尾の改行なし(CORRECT):

テキストを含むファイルの使用:

$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6  test.txt

注:-n in echoは、「末尾の改行を出力しない」ことを意味します。

-nインラインでechoを使用:

$ echo -n "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

printfを使用:

$ printf "%s" "test" | md5sum
098f6bcd4621d373cade4e832627b4f6  -

md5sumコマンドのみを使用:

md5sumと書きましょう、押します Enter 次に、文字列testを書き込んでから、二重の組み合わせを押します Ctrl+d

$ md5sum
test098f6bcd4621d373cade4e832627b4f6  -

md5sum -コマンドの使用:

md5sum -と書きましょう、押します Enter 次に、文字列testを書き込んでから、二重の組み合わせを押します Ctrl+d

$ md5sum -
test098f6bcd4621d373cade4e832627b4f6  -

ここに、md5ハッシュ付き末尾改行(SO NOT CORRECT)の計算に関するいくつかの例を示します:

テキストを含むファイルの使用:

$ echo "test" > test_n.txt
$ wc test_n.txt
1 1 5 test_n.txt
$ md5sum test_n.txt
d8e8fca2dc0f896fd7cb4cb0031ba249  test_n.txt

echo WITHOUT -nインラインを使用:

echo "test" | md5sum
d8e8fca2dc0f896fd7cb4cb0031ba249  -

ここでは文字列 を使用:

$ md5sum <<< "test"
d8e8fca2dc0f896fd7cb4cb0031ba249  -

md5sumコマンドのみを使用しますが、 Enter テキストを書いた後のキー:

md5sumと書きましょう、押します Enter 次に、文字列testを書き込んでからagaienを押します Enter かつての組み合わせ Ctrl+d

$ md5sum
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -

md5sum -コマンドを使用するが Enter テキストを書いた後のキー:

md5sum -と書きましょう、押します Enter 次に、文字列testを書き込んでからagaienを押します Enter かつての組み合わせ Ctrl+d

$ md5sum -
test
d8e8fca2dc0f896fd7cb4cb0031ba249  -
1
simhumileco