О соли

Случайная добавка, которая делает каждый хеш уникальным.

Что такое соль

Соль (salt) — это случайные данные, которые добавляют к паролю перед хешированием. Хешируется уже соль + пароль, а не просто пароль.

salt = os.urandom(16)        # 16 случайных байт
hash = sha256(salt + password)

Проблема без соли

Без соли одинаковые пароли дают одинаковые хеши. Хакеры заранее посчитали хеши миллионов популярных паролей — это радужные таблицы (rainbow tables). Видят хеш → находят пароль за секунду.

hash("qwerty")65e84be3... ← всегда одинаковый у всех

→ есть в радужной таблице → пароль раскрыт

Как соль решает проблему

У каждого пользователя своя случайная соль, поэтому даже один и тот же пароль qwerty даёт разные хеши. Готовые таблицы становятся бесполезны.

соль "a3f9" + "qwerty"2b7c...

соль "x1k2" + "qwerty"9f04...

Важный момент

Соль не секретная — её хранят рядом с хешем (на этом сайте соль и хеш склеены через двоеточие: соль:хеш). Секрет — сам пароль. Соль просто делает каждый хеш уникальным.

Аналогия: без соли все варят борщ одинаково — по фото легко угадать рецепт. А если каждый добавит свою уникальную случайную специю — даже одинаковый борщ выглядит по-разному.