Arch Linuxで、コマンドラインを使用してパスワードの単一のmd5ハッシュを作成するにはどうすればよいですか?もちろん、md5では利用できない安全なパスワードハッシュアルゴリズムがあることは承知していますが、これは実験の一部にすぎません。
単にecho
それをmd5sumに。
最初の結果は、ハッシュを生成する前に、文字列の最後の改行文字を考慮します。
$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
それ以外の場合 @ AFH は、改行文字を使用しない場合は次のようにします。
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
echo -n 'password' | …
を使用すると、パスワードを永続的なストレージ、つまり履歴に書き込むことはできません。
シェルによっては、コマンドの前にスペースを付けることでこれを回避できます(シェルでこれをテストします)。これがどのように処理されるかについては、シェルのドキュメントを読んでください。
または、md5sum
を実行し、パスワードを入力してからmd5sum
を直接使用することもできます。 Ctrl+D。ぶつけないで Enter パスワードと Ctrl+D、ハッシュに改行を含めたい場合を除きます。
Opensslを使用した例を次に示します
echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68
いつか別のハッシュアルゴリズムが必要になった場合、Opensslはいくつかの異なるハッシュアルゴリズムを実装します。
誰もがecho
を使用することを提案しているようです-少なくとも、ほとんどの場合、ありがたいことに、-n
を使用すると、 one の問題(印刷される)が軽減されます。最後に改行)。
ただし、echo
は必ずしも一貫しているとは限りません。これには、覚えておく必要のある動作上の癖が多数あり、システム間で互換性がない場合があります。 代わりにprintf
を使用 することをお勧めします。
したがって、使用する必要があります
$ printf '%s' 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
printf
を使用すると、最後に改行が必要な場合は、自分で明示的に改行する必要があります。
$ printf '%s\n' 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
$ echo 'P@ssword1' | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
$
それを取得しないように要求する代わりに(そしてecho
がシステム上で同じように機能することを期待して、これは後で実行されます):
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
$
上記のecho
の癖について詳しく説明すると、次のような点があります。
echo
に改行で出力を終了しないように指示する-n
をサポートしていますが、そうでないシステムもあります。そして、実際に-n
を出力したい場合はどうでしょうか?一部の実装は、シェルまたは環境の settings に基づいて実際に異なる場合があります。-n
またはそのいずれかである場合、エコーの動作について何も保証しません(その動作は特に undefined です)。引数には円記号が含まれています。Echoの代わりにprintfを使用することに関する上記のリンクされた質問への回答には、さらにいくつかのリンクがあり、興味がある場合はさらに読むためのリンクがあります。
質問は私に何か他のものを示唆しているので、完全にするために:
元のDESベースのcrypt()を/etc/shadow
で使用するために置き換えた、MD5ベースのソルトパスワードハッシュメソッドがあります。現在は新しいものに置き換えられていますが、実際に「MD5パスワードハッシュ」に遭遇した場合は、単純なMD5ではなくこれを参照している可能性があります。
これらのMD5ベースのハッシュは、接頭辞$1$
でマークされており、openssl passwd -1
で計算できます。
echo
とmd5sum
を使用してこれを簡単に行うことができます。
echo -n "password" | md5sum