Por que 'mkpasswd -m sha-512' produz resultados diferentes sempre que é chamado?

11

Estou usando esta função para criar uma senha no arquivo shadow

$ 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.

Isso me faz pensar como o valor de saída funciona como uma senha

Anthony Kong
fonte
2
A saída do comando é na verdade um salt (aleatório) e o hash da senha + salt. Como o sal é aleatório, a saída será sempre diferente.
Leia Como senhas de hash seguras?
Gilles 'SO- stop be evil'

Respostas:

20

Se você verificar a página de manual com "man mkpasswd", verá que esse comando também aceita um parâmetro opcional. -S, --salt=STRING Se você o omitir, ele usará um valor aleatório de sal e, portanto, o valor da senha criptografada também será diferente.

Se você fornecer o sal,

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

você sempre obtém o mesmo resultado.

A propósito, você pode ver o valor do sal no início da sequência de saída: é o valor entre $8 e 16 caracteres.

Ariel
fonte