しばらく疑問に思っていましたが、「echo 'helloworld' | openssl passwd -1 -stdin」を実行すると毎回異なる結果が得られるのはなぜですか?/ etc/shadowにハッシュを配置すると、パスワードと私のシステムへのログイン、それはどのように機能しますか?
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/
私はこのハッシュを使用して自分のパスワードがどうあるべきかをシステムに説明するので、毎回同じ結果が得られるはずだと思います。なぜ私はしないのですか?
それらはすべて異なる salt を持っています。塩は再利用してはならないため、毎回固有の塩が選択されます。各パスワードに固有のソルトを使用すると、それらが Rainbow table 攻撃に対して耐性になります。
実際、コマンドラインにソルトを指定すると、常に同じ結果が得られます。
$ 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/