Saya mengalami kesulitan memahami tujuan dari kata sandi untuk kata sandi. Ini pemahaman saya bahwa penggunaan utama adalah untuk menghambat serangan meja pelangi. Namun, metode yang saya lihat untuk menerapkan ini tampaknya tidak benar-benar membuat masalah lebih sulit.
Saya telah melihat banyak tutorial yang menyarankan agar garam digunakan sebagai berikut:
$hash = md5($salt.$password)
Alasannya adalah bahwa hash sekarang memetakan tidak ke kata sandi asli, tetapi kombinasi kata sandi dan garam. Tapi katakan $salt=foo
dan $password=bar
dan $hash=3858f62230ac3c915f300c664312c63f
. Sekarang seseorang dengan meja pelangi bisa membalik hash dan muncul dengan input "foobar". Mereka kemudian dapat mencoba semua kombinasi kata sandi (f, fo, foo, ... oobar, obar, bar, ar, ar). Mungkin butuh beberapa milidetik lagi untuk mendapatkan kata sandi, tetapi tidak banyak lagi.
Penggunaan lain yang pernah saya lihat adalah pada sistem linux saya. Di / etc / shadow kata sandi hash sebenarnya disimpan dengan garam. Sebagai contoh, garam "foo" dan password "bar" akan hash ini: $1$foo$te5SBM.7C25fFDu6bIRbX1
. Jika seorang hacker entah bagaimana bisa mendapatkan file ini, saya tidak tahu apa tujuan dari melayani garam, karena hash sebaliknya te5SBM.7C25fFDu6bIRbX
diketahui mengandung "foo".
Terima kasih atas cahaya yang dapat ditumpahkan siapa pun dalam hal ini.
EDIT : Terima kasih atas bantuannya. Untuk meringkas apa yang saya mengerti, garam membuat kata sandi hash lebih kompleks, sehingga membuatnya lebih kecil kemungkinannya ada di tabel pelangi yang telah dikomputasi. Apa yang saya salah pahami sebelumnya adalah saya berasumsi ada meja pelangi untuk SEMUA hash.