Mengapa kata sandi MD5 berbeda hash?

22

Saya sudah lama bertanya-tanya, mengapa menjalankan "echo 'helloworld' | openssl passwd -1 -stdin" menghasilkan hasil yang berbeda setiap kali? Jika saya menaruh hash di / etc / shadow saya dapat menggunakannya sebagai kata sandi dan masuk ke sistem saya, bagaimana cara kerjanya?

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/

Saya akan berpikir bahwa karena saya menggunakan hash ini untuk menggambarkan ke sistem apa kata sandi saya seharusnya, saya harus mendapatkan hasil yang sama setiap kali. Kenapa tidak?

Peter
sumber
3
Jika mereka sama setiap kali, seorang penyerang bisa saja hash miliaran kata sandi umum dan dengan mudah memeriksa mereka.
David Schwartz

Jawaban:

37

Mereka semua memiliki garam yang berbeda . Garam unik dipilih setiap kali, karena garam tidak boleh digunakan kembali. Menggunakan garam unik untuk setiap kata sandi membuatnya tahan terhadap serangan tabel pelangi .

Michael Hampton
sumber
6
Mungkin ide yang baik untuk menyebutkan bahwa output menyertakan garam setelah $ 1 $ (simbol dolar adalah pemisah).
colek
6
Jadi dalam hash '$ 1 $ xlm86SKN $ vzF1zs3vfjC9zRVI15zFl1' xlm86SKN adalah garam dan vzF1zs3vfjC9zRVI15zF1 adalah hash dari salted helloworld?
Peter
2
@ Peter: tepatnya.
Joachim Sauer
3

Memang jika Anda memberikan garam ke baris perintah Anda selalu mendapatkan hasil yang sama.

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