回答:
また、このようなことを言うことができます:
~$ echo -n Welcome | md5sum
83218ac34c1834c26781fe4bde918ee4 -
基本的に@enzotibで説明されているのと同じことを行いますが、おそらく少し単純です。
83218ac34c1834c26781fe4bde918ee4 -
-n
は必須であることに注意してください。それがないと、改行文字が含まれているため、ハッシュはまったく間違っています。
-
最後にどのように無視できますか。@jfmessier
非常にシンプルで、標準入力を受け入れるため、
md5sum <<<"my string"
シェルによって追加される末尾の改行を回避するには:
printf '%s' "my string" | md5sum
<<<"
スクリプトでパイプを使用する傾向があります。echo string
コマンドラインで勝ちます。よくやった。
printf
正しく使用するために+1 。を使用せずに合計を取得する場合は-
、を入力し| cut -d ' ' -f 1
ます。使用例:sum=$(printf '%s' 'some string' | md5sum | cut -d ' ' -f 1)
<<<
演算子とprintf
関数はmd5ハッシュに対してまったく異なる結果を与えています!しかし、printfの結果は正しいです!
<<<
演算子を使用すると、md5sumに改行が送信されるようです。
$ 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
cut -d ' ' -f 1
md5() { echo -n $1 | md5sum | awk '{print $1}'; }
.bashrcに関数を作成$ md5 test
し、コマンドラインで使用できます。回答をありがとう
awk
コマンド:'$0=$1'
--help
for でのクイックポークはmd5sum
、コマンドが次のことを示しています。
md5sum -
その後、簡単な入力を求めるプロンプトが表示されます。テキストを入力しEnter、次にCtrl+ Dを使用してファイルの終わりを示すと、入力しmd5sum
た生のテキストのMD5が吐き出されます(それを含むEnter、CR、IIRC)。
入力が少なく、配管なし!そして、あなたの平文パスワードがシェル履歴に記録されるのを避けます!わー!
末尾のCRが必要ない場合(通常、パスワードをハッシュする場合)、+のEnter前にヒットしないで、代わりに+を2回入力します。CtrlDCtrlD
私のスクリプトでは、この問題について知っておくべきことが2つあることがわかりました。
echo "$myvariable"
かどうかは関係ありませんがecho -n "$myvariable"
、常に文字列にdoubleqoutesを使用し、常に同じメソッドを使用する必要があります。そうでなければ、物事は一致しません。出力では、例に示すように、常に末尾のスペースとダッシュが表示されます。
$ echo -n Welcome | md5sum
7803ffcaea43bb81a439fde13b29bc35 -
それを取り除き、コードだけにとどまるには7803ffcaea43bb81a439fde13b29bc35
、次のようにします:echo "$myvariable" | md5sum | cut -d" " -f1
-n
間違ったMD5につながる末尾の改行を出力避けるために、ここでパラメータを:echo -n $myvariable | md5sum | cut -d" " -f1
これを行うには多くの例がありますが、明示的または暗黙的に改行を含むものとそうでないものがあるため、それらのいくつかは同等ではありません。
人気のあるメソッドのうち、改行を含むメソッドと含まないメソッドを明確に指定したいと思います。
以下は、末尾改行なしのmd5ハッシュの計算(CORRECT)の例です。
テキストを含むファイルの使用:
$ echo -n "test" > test.txt
$ wc test.txt
0 1 4 test.txt
$ md5sum test.txt
098f6bcd4621d373cade4e832627b4f6 test.txt
注: -n
は、echo
「末尾の改行を出力しない」という意味です。
使用echo
して-n
インライン:
$ 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ハッシュを計算するためのいくつかの例を示します(正しくない):
テキストを含むファイルの使用:
$ 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 -
md5 -s abcdefg