Arch Linux では、コマンド ラインを使用してパスワードの単一の md5 ハッシュを作成するにはどうすればよいでしょうか。もちろん、md5 ではない安全なパスワード ハッシュ アルゴリズムが利用できることは承知していますが、これは単なる実験の一部です。
答え1
単にecho
md5sum にします。
最初の結果では、ハッシュを生成する前に、文字列の末尾の改行文字が考慮されます。
$ echo P@ssword1 | md5sum
0a43c426e3d6764fe1f3f7cbb3579eba -
それ以外の場合は翻訳:改行文字を使用しない場合は、次のように指定します。
$ echo -n 'P@ssword1' | md5sum
d106b29303767527fc11214f1b325fb6 -
答え2
どの回答にも、 を使用するとecho -n 'password' | …
、パスワードが永続的なストレージ、つまり履歴に書き込まれるということについては触れられていません。
シェルによっては、コマンドの前にスペースを入れることでこれを回避できます (シェルでこれをテストしてください)。これがどのように処理されるかについては、シェルのドキュメントを読んでください。
あるいは、md5sum
を実行しmd5sum
、パスワードを入力してから を直接使用することもできます。ハッシュに改行を含めたい場合を除き、パスワードと の間でCtrl+Dを押さないでください。EnterCtrl+D
答え3
これはopensslを使用した例です
echo -n 'stack overflow' | openssl md5
(stdin)= 481b8423202598ecfb233c5fa68caf68
Openssl は、将来別のハッシュ アルゴリズムが必要になった場合に備えて、いくつかの異なるハッシュ アルゴリズムを実装しています。
答え4
誰もがecho
、少なくともほとんどの場合、ありがたいことに、-n
これにより、1つ問題点 (最後に改行が印刷される) を示します。
しかし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
上で述べたように、いくつか例を挙げます。
- システムによって動作が異なります。最近のシステムの多くは、出力を改行で終了しないよう
-n
に指示する機能をサポートしていますecho
が、そうでないシステムもあります。実際に印刷したい場合はどうでしょうか。-n
? 実装によっては、設定シェルまたは環境内。 - POSIXは、いくつかの文字シーケンス(特にバックスラッシュでエスケープされた文字)を特別な方法で処理するか、または処理しない可能性があります。パスワードにそれらを含めることはまったく不合理ではありません。また、POSIXはechoの動作について何も保証していません(その動作は特に未定義) の場合、
-n
またはその引数のいずれかにバックスラッシュが含まれます。
echo の代わりに printf を使用する方法に関する上記リンクの質問に対する回答には、さらにいくつかの回答があり、さらに知りたい場合は、さらに読むためのリンクもあります。