✨ Интерактивный разбор

Хеш под микроскопом

Из «Привет» — строка из 64 символов. Из «привет» — совершенно другая строка. И при этом из «Привет» всегда одна и та же. Так работает хеш. Дальше — что это вообще, зачем нужно, и почему на нём держится вся безопасность.

Вход → выход SHA-256
Вход Привет
Хеш e3b0c442...b855
АлгоритмSHA-256
Длина64 hex
Необратимда
1 Что это

Отпечаток пальца для данных

Хеш-функция — это математическая операция, которая берёт данные любой длины и превращает их в строку фиксированной длины. Как отпечаток пальца: у вас может быть любая рука, но отпечаток — компактный, узнаваемый и уникальный.

Любой файл — фотография на 10 МБ, текст в 100 символов, видео на 5 ГБ — превращается в строку одинаковой длины. Для SHA-256 это всегда 64 символа в 16-ричной записи.

Ключевое свойство: из хеша невозможно восстановить исходные данные. Это не «шифрование», которое можно расшифровать ключом. Это именно отпечаток — он показывает, что данные не изменились, но сами данные в нём не содержатся.

2 Живой хешер

Введите текст — увидите четыре хеша

Введите любой текст — и увидите, как его хешируют четыре разных алгоритма. У каждого своя длина и свои свойства. Чем длиннее хеш, тем труднее найти два разных текста с одинаковым хешем.

MD5 Старый, быстрый, давно взломан
128 бит
—
❌ Не годится для паролей. Существуют готовые таблицы всех MD5 от коротких строк — найти прообраз за секунды.
SHA-1 Устаревший, но всё ещё встречается в Git
160 бит
—
⚠️ В 2017 году Google показала первую коллизию SHA-1. Не для паролей. Git переходит на SHA-256.
SHA-256 Стандарт современной криптографии
256 бит
—
✓ Используется в HTTPS, блокчейне, подписях, TLS-сертификатах. Считается надёжным до сих пор.
SHA-512 То же, что SHA-256, но длиннее
512 бит
—
✓ Используется там, где нужен большой запас стойкости. Медленнее, но на современных процессорах почти незаметно.
3 Лавинный эффект

Одна буква — половина хеша меняется

Казалось бы, если изменить одну букву — хеш должен поменяться чуть-чуть. Но нет. Лавинный эффект: изменение хотя бы одного бита на входе даёт совершенно другой хеш на выходе. В среднем меняется половина всех символов.

Измените текст во втором поле на одну букву — и увидите, сколько символов хеша изменилось.

Текст A исходный

—

Текст B измените одну букву

—
Символов хеша изменилось —
💡 В идеальной хеш-функции изменение одного бита на входе меняет ~50% бит на выходе. Для SHA-256 (256 бит) — это около 128 бит, то есть 32 символа из 64. Именно поэтому хеш годится для проверки целостности файлов.
4 Аналогии

Как это представить в жизни

Три простых сравнения, чтобы уложить идею в голове.

🖐️

Отпечаток пальца

У человека любая рука, но отпечаток — компактный, узнаваемый и уникальный. Так и хеш: любые данные → короткий «слепок». По отпечатку не восстановишь человека — но можно понять, тот же это человек или нет.

🥩

Мясорубка

Можно прокрутить котлету — но нельзя прокрутить её обратно в стейк. Так и хеш: из данных — легко, а обратно — физически невозможно. Это не «трудно», а именно невозможно.

📦

Контрольная сумма посылки

Почта взвешивает посылку и ставит штамп с весом. Если по пути кто-то доложил или вынул — вес не сойдётся. Так и хеш: сравнили два числа — сразу видно, менялся файл или нет.

5 Где применяется

Четыре сценария из жизни

Хеш-функции — невидимый фундамент современного интернета. Кликните на любой сценарий, чтобы увидеть, что происходит внутри.

1

Пароли

Сайт хранит не пароль, а его хеш

2

Целостность файлов

Контрольная сумма — не подменили ли

3

Блокчейн

Связка блоков через хеши

4

Подписи

Подписывают не текст, а его хеш

6 Свойства

Что делает функцию «хорошей»

Не всякая функция сойдёт. Настоящая криптографическая хеш-функция должна обладать пятью свойствами одновременно.

⚖️

Детерминированность

Одинаковый вход → всегда одинаковый выход. Сегодня, завтра и через 10 лет.

⚡

Быстрота

Хеш от файла на 5 ГБ считается за секунды. Это практическая необходимость.

🌊

Лавинный эффект

Изменение одного бита меняет ~половину бит хеша. Никакой корреляции.

🚫

Необратимость

По хешу невозможно восстановить исходные данные. Только перебором всех вариантов.

🛡️

Стойкость к коллизиям

Практически невозможно найти два разных входа с одинаковым хешем. Именно здесь MD5 сломался, а SHA-256 — держится.

🎲

Псевдослучайность

Хеш неотличим от случайной строки. Даже если вход был «111111», хеш выглядит как шум.