En angripare är "tillåten" att känna till saltet - din säkerhet måste utformas på ett sätt att även med kunskapen om saltet är den fortfarande säker.
Vad gör saltet?
Salt hjälper till att försvara sig mot brute-force-attacker med förberäknade "regnbågstabeller".
Salt gör brute-force mycket dyrare (i tid/minne) för angriparen.
Att beräkna en sådan tabell. är dyrt och görs vanligtvis bara när det kan användas för mer än en attack/lösenord.
OM du använder samma salt för alla lösenord kan en angripare förberäkna en sådan tabell och sedan brute-force dina lösenord till klartext ...
Så länge du genererar ett nytt (bästa kryptografiskt starkt) slumpmässigt salt för varje lösenord du vill lagra hashen till är det inga problem.
OM du vill stärka säkerheten ytterligare
Du kan beräkna hashen flera gånger om (hasha hashen etc.) - detta kostar dig inte mycket men det gör en brute-force attack / beräkna "regnbågstabeller" ännu dyrare... snälla don inte uppfinna dig själv - det finns beprövade standardmetoder för att göra det, se till exempel http://en. wikipedia.org/wiki/PBKDF2
och http://www.itnewb.com/tutorial/Encrypting-Passwords-with-PHP-for-Storage-Using-the-RSA-PBKDF2-Standard
OBS:
Att använda en sådan mekanism är idag obligatoriskt eftersom "CPU-tid" (användbar för attacker som regnbågstabeller/brute force etc.) blir mer och mer allmänt tillgänglig (se till exempel det faktum att Amazons molntjänst är bland de 50 bästa av snabbaste supercomuters i världen och kan användas av alla för en jämförelsevis liten summa)!