MD5パスワードのハッシュが異なるのはなぜですか?


22

私はしばらく不思議に思っていましたが、なぜ「echo 'helloworld' | openssl passwd -1 -stdin」を実行すると毎回異なる結果が得られるのでしょうか。パスワードとシステムへのログイン、それはどのように機能しますか?

computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$xlm86SKN$vzF1zs3vfjC9zRVI15zFl1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$/0.20NIp$pd4X9xTZ6sF8ExEGqAXb9/
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$sZ65uxPA$pENwlL.5a.RNVZITN/zNJ1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$zBFQ0d3Z$SibkYmuJvbmm8O8cNeGMx1
computer:/ user$ echo 'helloworld' | openssl passwd -1 -stdin
$1$PfDyDWER$tWaoTYym8zy38P2ElwoBe/

このハッシュを使用してパスワードをシステムに説明するため、毎回同じ結果が得られると思います。どうして?


3
毎回同じである場合、攻撃者は数十億の一般的なパスワードをハッシュし、それらを簡単にチェックできます。
デビッドシュワルツ

回答:


37

それらはすべて異なる塩を持っています。塩は決して再使用されるべきではないため、毎回一意の塩が選択されます。各パスワードに一意のソルトを使用すると、レインボーテーブル攻撃に対する耐性が高まります



6
出力には、$ 1 $の後にソルトが含まれることをお勧めします(ドル記号は区切り記号です)。
突く

6
'$ 1 $ xlm86SKN $ vzF1zs3vfjC9zRVI15zFl1'のハッシュでxlm86SKNはソルトであり、vzF1zs3vfjC9zRVI15zFl1はソルトされたhelloworldのハッシュですか?
ピーター

2
@ピーター:正確に。
ヨアヒムザウアー

3

実際、コマンドラインにソルトを提供すると、常に同じ結果が得られます。

$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
$ echo 'helloworld' | openssl passwd -1 -stdin -salt my-salt
$1$my-salt$S/PsLSioHR8ffN8bpIzsk/
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.