Для простоты давайте представим, что все используют цифры в качестве своих паролей.
Если все используют 8 цифр в качестве пароля, это 100 000 000 возможностей. Если вы пытаетесь сломать систему, вам нужно хэшировать все эти возможности. Если у вас есть «хэш хэша хэша», вам все равно нужно просто хэшировать эти 100 000 000 возможностей - просто несколько более сложным способом.
Теперь давайте представим, что у нас также есть 4-значная соль. Теперь, вместо 100 000 000 возможностей, есть 1 000 000 000 000 ... мы дали потенциальному злоумышленнику в 10 000 раз больше работы, чем просто в 3 раза больше работы.
По сути, считайте, что соль - это способ искусственно увеличить пароль каждого и, таким образом, увеличить пространство, над которым должна работать атака по словарю.
РЕДАКТИРОВАТЬ: Просто для ясности, учитывая, что соль предоставляется также в виде простого текста, у вас все равно будет только 100 000 000 возможностей для попытки атаковать любой хеш . Тем не менее, это означает, что после использования этих возможностей для одного пароля у злоумышленника не будет никакой полезной информации для атаки на другой пароль. Без соли злоумышленник может создать словарь с 100 000 000 возможностей, а затем узнать все пароли в базе данных, учитывая только их хэши. Другими словами, соли помогают предотвратить массовые атаки. Они также означают, что вы не можете перегенерировать словарь: чтобы эффективно атаковать один пароль, вы должны знать соль заранее. Без соли вы можете вычислить хеш каждого возможного пароля, прежде чем получите доступ к самим хешам.