Соль помогает двумя способами:
1) Когда два (или более) человека используют один и тот же пароль, без соли вы можете видеть, кто использует один и тот же пароль (все хэши одинаковы).Таким образом, теоретически, если этот человек знает один из паролей этого человека, он знает пароли каждого с таким же хэшем.Это незначительная причина.
2) Основная причина заключается в предотвращении атак, обычно называемых словарными или радужными атаками.В этих атаках кто-то использует базу заранее рассчитанных хэшей для общих паролей.Часто эти базы данных имеют размеры.Но в этот момент очень просто выполнить поиск имеющихся у вас хешей (хешированного пароля) по списку предварительно вычисленных хешей и посмотреть, что это за связанный пароль.
Используя солт-значение(как правило, вы хотите, чтобы это было случайное число) хеш не будет соответствовать словарю (вероятность того, что они предварительно вычислят все пароли со всеми возможными солт-значениями, экспоненциально сложнее).Поэтому, даже если ваш пользователь использует легко атакуемый пароль, скажем «Пароль», который почти наверняка будет любым в любом словаре паролей / радужной таблице, предварительно ожидая случайного значения соли, вы гарантируете бесполезность хешаатакующему.Между тем, для вас, поскольку соль просто хранится в открытом тексте, вам очень легко добавить ее в свой открытый текст для сравнения пароля, введенного пользователем.