Почему 'mkpasswd -m sha-512' каждый раз вызывает другой результат?

11

Я использую эту функцию для создания пароля в теневом файле

$ mkpasswd -m sha-512 password
$6$o50n4EfNOBzfs$K5l5AcOI5e0I9n2df0LmR11OLSPKSVM6AGBOnWVfDDfMubb46MrAj0zehdLNEoYzD2fj5q4XUdDwexj/dWLHy/
$ mkpasswd -m sha-512 password
$6$ADmDOhDpW$gsYQuiKPpV1ewaUpRq2VGAvrcocffLQ8XGF94e6LNLZfKIjy6Ku.cZoR/5exeCi1ESjPB9TRM6HxCiY5BCNCV0
$ mkpasswd -m sha-512 password
$6$Efj1agaI$HGkny3q1OTYT4KREh18gueHJae/3Bvil0iOEhfXj8bD.qy9Lg2UIQJMuBcq0XtG3xzueK.7cp0GfKr7tEo5YI/
$ mkpasswd -m sha-512 password
$6$zdVPlCPai4Y$x3CBvlP99xZXZcr4PTiE..YLpZx39h5OHDxqazd9wFLImPuwsXF0M6KmqLzlCCrnQhI2lmEPdCzfmHA/fDiOz.

Это заставляет меня задуматься, как выходное значение работает как пароль

Энтони Конг
источник
2
Вывод команды на самом деле является и солью (случайной), и хэшем пароля + соли. Поскольку соль случайна, результат всегда будет другим.
Прочтите Как безопасно хэшировать пароли?
Жиля SO- перестать быть злом "

Ответы:

20

Если вы проверите man-страницу с помощью «man mkpasswd», вы увидите, что эта команда также принимает необязательный параметр. -S, --salt=STRING Если вы пропустите его, она будет использовать случайное значение соли, и поэтому значение зашифрованного пароля также будет другим.

Если вы предоставите соль,

mkpasswd -m sha-512 password -s "11223344"
$6$11223344$YzaRt.fnidpXmKw.Dl20htfOrJ8X2Yx3V.h5zUlhlN2SdczempQmQcDcMYd6mHiXlaMqyGt200zDwuZiC8ZZw1

Вы всегда получаете один и тот же результат.

Кстати, вы можете увидеть значение соли в самом начале выходной строки: это значение от $8 до 16 символов.

Ariel
источник