Katakanlah seseorang membobol sistem Anda (atau menemukan celah dalam kueri sql Anda) maka Anda tidak ingin mereka mengetahui semua kata sandi.
Jadi, Anda melakukan hash sebelum menyimpannya. Jadi Anda dapat memeriksa apakah kata sandinya oke, tetapi tidak menyimpulkan kata sandi dari hash.
Kecuali Anda menggunakan hash yang lemah. Jika Anda hanya ingin sha1($password)
maka Anda akan menemukan memasukkan hash kata sandi yang sering digunakan ke Google memberikan kata sandi dalam waktu kurang dari 0,1 detik.* (tetapi jika tidak, Anda juga dapat menemukan tabel pelangi untuk semua jenis hash)
Jadi Anda ingin menambahkan "garam", artinya, Anda menghasilkan beberapa nilai sampah:
$salt = rand().rand().rand();
dan kemudian simpan
$hash = $salt."-".sha1($salt.$password);
saat memeriksa, Anda mengetahui garamnya dan Anda dapat memeriksa apakah kata sandinya benar, tetapi mengetahui hash dan garamnya membuat pemulihan kata sandi masih sulit. (kecuali Anda memiliki meja pelangi yang berisi garam, tentu saja)
* ini memerlukan penjelasan: Saya pernah mengambil tabel pengguna yang besar dan menemukan beberapa hash muncul beberapa kali. Saya mencari di Google yang paling sering terjadi dan terbalik menjadi computer
person
mvds
schedule
24.08.2010