Почему пароли md5 хэшируются по-разному?

22

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

Я думаю, что поскольку я использую этот хэш, чтобы описать системе, каким должен быть мой пароль, я должен каждый раз получать одни и те же результаты. Почему не я?

Питер
источник
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/
danidemi
источник