О соли
Случайная добавка, которая делает каждый хеш уникальным.
Что такое соль
Соль (salt) — это случайные данные, которые добавляют к паролю перед хешированием. Хешируется уже соль + пароль, а не просто пароль.
salt = os.urandom(16) # 16 случайных байт hash = sha256(salt + password)
Проблема без соли
Без соли одинаковые пароли дают одинаковые хеши. Хакеры заранее посчитали хеши миллионов популярных паролей — это радужные таблицы (rainbow tables). Видят хеш → находят пароль за секунду.
hash("qwerty") → 65e84be3... ← всегда одинаковый у всех
→ есть в радужной таблице → пароль раскрыт
Как соль решает проблему
У каждого пользователя своя случайная соль, поэтому даже один и тот же пароль qwerty даёт разные хеши. Готовые таблицы становятся бесполезны.
соль "a3f9" + "qwerty" → 2b7c...
соль "x1k2" + "qwerty" → 9f04...
Важный момент
Соль не секретная — её хранят рядом с хешем (на этом сайте соль и хеш склеены через двоеточие: соль:хеш). Секрет — сам пароль. Соль просто делает каждый хеш уникальным.
Аналогия: без соли все варят борщ одинаково — по фото легко угадать рецепт. А если каждый добавит свою уникальную случайную специю — даже одинаковый борщ выглядит по-разному.