Password
為什麼 md5 密碼的雜湊值不同?
我一直在想,為什麼每次執行“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/
我認為因為我使用這個雜湊向系統描述我的密碼應該是什麼,所以我每次都應該得到相同的結果。我為什麼不呢?
他們都有不同的鹽。每次都會選擇一種獨特的鹽,因為鹽永遠不應該被重複使用。為每個密碼使用唯一的鹽使它們能夠抵抗彩虹表攻擊。
事實上,如果你向命令行提供鹽,你總是會得到相同的結果。
$ 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/