Прежде всего, то, что вы описали, это не атака радуги, это атака по словарю.
Во-вторых, основной смысл использования соли в том, что она просто усложняет жизнь атакующему. Например, если вы добавите 32-битную соль к каждой парольной фразе, злоумышленник должен будет хэшировать и повторно хэшировать каждый ввод в словаре ~ 4 миллиарда раз и сохранять результаты из всех из этих иметь успешную атаку.
Чтобы иметь хоть какую-то надежду на эффективность, словарь должен включать что-то вроде миллиона входных данных (и миллион соответствующих результатов). Вы упомянули SHA-1, так что давайте использовать это для нашего примера. Он дает 20-байтовый (160-битный) результат. Давайте предположим, что средний ввод составляет около 8 символов. Это означает, что словарь должен быть примерно 28 мегабайт. Однако при использовании 32-битной соли размер и время создания словаря умножаются на 2 32 -1.
Так же, как в грубом приближении чрезвычайно , скажем, создание (несоленого) словаря заняло час. Чтобы сделать то же самое с 32-битной солью, потребуется 2 32 -1 часа, что составляет около 15 лет. Не так много людей, готовых потратить столько времени на атаку.
Поскольку вы упоминаете радужные таблицы, я добавлю, что они, как правило, еще больше и медленнее для начала. Типичная радужная таблица легко заполнит DVD, и умножив ее на 2 32 -1, мы получим достаточно большое число, чтобы хранение стало серьезной проблемой (например, это больше, чем все хранилище, встроенное в вся история компьютеров, хотя бы на планете земля).