Mengapa 'mkpasswd -m sha-512' menghasilkan hasil yang berbeda setiap kali dipanggil?

11

Saya menggunakan fungsi ini untuk membuat kata sandi dalam file 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.

Itu membuat saya bertanya-tanya bagaimana cara kerja nilai output sebagai kata sandi

Anthony Kong
sumber
2
Output dari perintah ini sebenarnya adalah salt (acak) dan hash dari password + salt. Karena garamnya acak, hasilnya akan selalu berbeda.
Baca Bagaimana cara mengamankan kata sandi hash?
Gilles 'SANGAT berhenti menjadi jahat'

Jawaban:

20

Jika Anda memeriksa halaman manual dengan "man mkpasswd", Anda akan melihat bahwa perintah itu juga menerima parameter opsional. -S, --salt=STRING Jika Anda mengabaikannya, itu akan menggunakan nilai garam acak, dan karena itu nilai kata sandi yang dienkripsi juga akan berbeda.

Jika Anda memberikan garam,

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

Anda selalu mendapatkan hasil yang sama.

Omong-omong, Anda dapat melihat nilai garam di bagian paling awal dari string keluaran: ini adalah nilai antara $'dan 8 hingga 16 karakter.

Ariel
sumber