¿Por qué 'mkpasswd -m sha-512' produce resultados diferentes cada vez que se llama?

11

Estoy usando esta función para crear una contraseña en el archivo 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.

Me hace preguntarme cómo funciona el valor de salida como contraseña

Anthony Kong
fuente
2
La salida del comando es en realidad tanto un salt (aleatorio) como el hash de la contraseña + salt. Como la sal es aleatoria, la salida siempre será diferente.
Lea ¿Cómo hacer un hash seguro de las contraseñas?
Gilles 'SO- deja de ser malvado'

Respuestas:

20

Si marca la página de manual con "man mkpasswd", verá que ese comando también acepta un parámetro opcional. -S, --salt=STRING Si lo omite, usará un valor de sal aleatorio y, por lo tanto, el valor de la contraseña cifrada también será diferente.

Si proporcionas la sal,

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

siempre obtienes el mismo resultado.

Por cierto, puede ver el valor de sal al comienzo de la cadena de salida: es el valor entre $'s y 8 a 16 caracteres de longitud.

Ariel
fuente