Некоторое время я задавался вопросом, почему выполнение "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/