Sól to wartość dodawana do hasła (lub innego sekretu), który chcesz zahaszować w jeden sposób. Oznacza to, że może znajdować się przed, po lub gdzieś w haśle, o ile jego pozycja i wartość są zgodne z podanym hasłem.
To, co robi, to łagodzenie ataków słownikowych – w zasadzie słowników popularnych haseł wstępnie zaszyfrowanych bez soli – od użycia do „odgadnięcia” hasła jednokierunkowego, o ile atakujący nie zna skrótu. Jeśli każde hasło ma inny skrót to bardzo utrudnia osobie atakującej utworzenie słownika zoptymalizowanego do łamania haseł (potrzebowaliby słownika dla każdej oddzielnej soli i musieliby także wiedzieć, gdzie sól została umieszczona w każdym haśle ).
Oczywiście, aby to wszystko miało zastosowanie, atakujący musi przede wszystkim mieć skróty swoich haseł. Nie ma to nic wspólnego z atakowaniem haseł przez odgadywanie ich za pomocą monitu wejściowego.
Jeśli chodzi o MySQL, jeśli podasz sól podczas haszowania hasła, upewnij się, że zapisałeś, gdzie ta sól się znajdowała. Następnie, gdy użytkownik próbuje uwierzytelnić, łączysz zapisaną wartość salt z hasłem (podczas wywołania crypt
na przykład) i jeśli wynikowy hash pasuje, oznacza to, że wpisali poprawne hasło. (Zauważ, że w żadnym momencie zaszyfrowanie hasła nie jest odwracane; a więc w jedną stronę).