Sůl je hodnota, která se přidává k heslu (nebo jinému tajemství), které chcete zahašovat jedním způsobem. To znamená, že může být před, za nebo někde uvnitř hesla, pokud je jeho pozice a hodnota konzistentní pro dané dodané heslo.
Tím se zmírní slovníkové útoky – v podstatě slovníky běžných hesel předem hašovaných bez soli – od použití k „uhádnutí“ jednosměrného hesla, pokud útočník nezná hash. Pokud má každé heslo jiný hash, pak je pro útočníka velmi obtížné vytvořit slovník optimalizovaný pro prolomení vašich hesel (potřeboval by slovník pro každou samostatnou sůl a také by potřeboval vědět, kde byla sůl umístěna v každém hesle ).
Samozřejmě, aby to všechno bylo použitelné, musí mít útočník na prvním místě hash vašich hesel. To nemá nic společného s napadáním hesel jejich uhodnutím pomocí nějaké vstupní výzvy.
Pokud jde konkrétně o MySQL, pokud zadáte sůl při hashování hesla, ujistěte se, že jste někde zaznamenali, jaká sůl byla. Když se pak uživatel pokusí o ověření, zkombinujete zaznamenanou hodnotu salt s heslem (během volání crypt
například) a pokud se výsledný hash shoduje, pak zadali správné heslo. (Všimněte si, že hašování hesla není v žádném okamžiku obráceno, tedy jedním způsobem.)