Garam adalah nilai yang ditambahkan ke kata sandi (atau rahasia lainnya) yang ingin Anda hash dengan satu cara. Ini berarti bisa sebelum, sesudah, atau di suatu tempat di dalam kata sandi, selama posisi dan nilainya konsisten untuk kata sandi yang diberikan.
Apa yang dilakukan adalah mengurangi serangan kamus - pada dasarnya kamus kata sandi umum yang telah di-hash sebelumnya tanpa garam - dari digunakan untuk "menebak" kata sandi satu arah selama penyerang tidak mengetahui hash. Jika setiap kata sandi memiliki hash yang berbeda maka sangat sulit bagi penyerang untuk membuat kamus yang dioptimalkan untuk memecahkan kata sandi Anda (mereka akan membutuhkan kamus untuk setiap garam terpisah dan mereka juga perlu tahu di mana garam ditempatkan di setiap kata sandi ).
Tentu saja agar semua ini dapat diterapkan, penyerang harus memiliki hash kata sandi Anda terlebih dahulu. Ini tidak ada hubungannya dengan menyerang kata sandi dengan menebaknya melalui beberapa prompt input.
Mengenai MySQL secara khusus jika Anda memberikan garam saat hashing kata sandi, pastikan Anda mencatat apa garam itu di suatu tempat. Kemudian ketika pengguna mencoba otentikasi, Anda menggabungkan nilai garam yang direkam itu dengan kata sandi (selama panggilan ke crypt
misalnya) dan jika hash yang dihasilkan cocok maka mereka telah memasukkan kata sandi yang benar. (Perhatikan bahwa hashing kata sandi tidak pernah dibalik; jadi satu arah.)