Et salt er en værdi, der føjes til en adgangskode (eller anden hemmelighed), som du vil hash på én måde. Det betyder, at det kan være før, efter eller et sted inde i adgangskoden, så længe dens position og værdi er konsistent for en given adgangskode.
Hvad dette gør, er, at det afbøder ordbogsangreb - dybest set ordbøger med almindelige adgangskoder, der er præhashed uden salt - fra at blive brugt til at "gætte" en envejsadgangskode, så længe angriberen ikke kender hashen. Hvis hvert kodeord har en forskellig hash, gør det det meget vanskeligt for en angriber at oprette en ordbog, der er optimeret til at knække dine adgangskoder (de ville have brug for en ordbog for hvert separat salt, og de ville også have brug for at vide, hvor saltet var placeret i hver adgangskode ).
For at alt dette skal være anvendeligt skal en angriber naturligvis have hashen af dine adgangskoder i første omgang. Dette har intet at gøre med at angribe adgangskoder ved at gætte dem gennem en inputprompt.
Med hensyn til MySQL specifikt, hvis du angiver et salt, når du hash en adgangskode, skal du sørge for at registrere, hvad det salt var et sted. Når en bruger derefter forsøger at godkende, kombinerer du den registrerede saltværdi med adgangskoden (under opkaldet til crypt
for eksempel), og hvis den resulterende hash matcher, har de indtastet den korrekte adgangskode. (Bemærk, at hashing af en adgangskode på intet tidspunkt bliver omvendt; altså én måde.)