Соль нужна исключительно для одного случая - чтобы нельзя было подобрать пароль по известной базе хешей.
Если при генерации хеша, используется каждый раз новая соль - она вполне может лежать открытым текстом рядом с хешом, или прямо в нем (несколько символов в начале, в конце или середине). Это позволяет для одинаковых паролей создавать разные хеши, для простых паролей создавать непростые хеши, и создает невозможность создания радужной таблицы под конкретный ресурс.
ppppp.ssssss -> hhhhhhhhhhhhhhhhhsssss (p - pass, s - salt, h - hash)
ssssspppppppsssss - > hhhhhhhhhhhhsss или sssshhhhhhhhh или даже shshshshshhhhhhhhhhh
Бывает и другая схема, когда все хешируется с конкретной мастер солью (например пароли в разных форумных движках), что позволяет хранить хеши отдельно от соли (одна соль на все хеши в config.php, и сами хеши в базе данных).
Можно усложнить второй вариант, добавив базу из нескольких солей, и каждый раз перебирать их все на стороне сервера. А в базе будут хранится хеши, в которых пароль с солью захеширован, но в самом хеше соль не прописана, и какая была использована для конкретного хеша - непонятно. Повышает безопасность, если утекли только все хеши.
Можно совмещать первый и второй вариант, можно параноить по-разному.
ssspppppppsss -> hash(hash(hash(sssmastersalt.hhhhhhsss)+hash(hhhhhhhhhsss))
В общем зависит от алгоритма и желания усложнить.