Из «Привет» — строка из 64 символов. Из «привет» — совершенно другая строка. И при этом из «Привет» всегда одна и та же. Так работает хеш. Дальше — что это вообще, зачем нужно, и почему на нём держится вся безопасность.
Хеш-функция — это математическая операция, которая берёт данные любой длины и превращает их в строку фиксированной длины. Как отпечаток пальца: у вас может быть любая рука, но отпечаток — компактный, узнаваемый и уникальный.
Любой файл — фотография на 10 МБ, текст в 100 символов, видео на 5 ГБ — превращается в строку одинаковой длины. Для SHA-256 это всегда 64 символа в 16-ричной записи.
Ключевое свойство: из хеша невозможно восстановить исходные данные. Это не «шифрование», которое можно расшифровать ключом. Это именно отпечаток — он показывает, что данные не изменились, но сами данные в нём не содержатся.
Введите любой текст — и увидите, как его хешируют четыре разных алгоритма. У каждого своя длина и свои свойства. Чем длиннее хеш, тем труднее найти два разных текста с одинаковым хешем.
Казалось бы, если изменить одну букву — хеш должен поменяться чуть-чуть. Но нет. Лавинный эффект: изменение хотя бы одного бита на входе даёт совершенно другой хеш на выходе. В среднем меняется половина всех символов.
Измените текст во втором поле на одну букву — и увидите, сколько символов хеша изменилось.
Три простых сравнения, чтобы уложить идею в голове.
У человека любая рука, но отпечаток — компактный, узнаваемый и уникальный. Так и хеш: любые данные → короткий «слепок». По отпечатку не восстановишь человека — но можно понять, тот же это человек или нет.
Можно прокрутить котлету — но нельзя прокрутить её обратно в стейк. Так и хеш: из данных — легко, а обратно — физически невозможно. Это не «трудно», а именно невозможно.
Почта взвешивает посылку и ставит штамп с весом. Если по пути кто-то доложил или вынул — вес не сойдётся. Так и хеш: сравнили два числа — сразу видно, менялся файл или нет.
Хеш-функции — невидимый фундамент современного интернета. Кликните на любой сценарий, чтобы увидеть, что происходит внутри.
Сайт хранит не пароль, а его хеш
Контрольная сумма — не подменили ли
Связка блоков через хеши
Подписывают не текст, а его хеш
Не всякая функция сойдёт. Настоящая криптографическая хеш-функция должна обладать пятью свойствами одновременно.
Одинаковый вход → всегда одинаковый выход. Сегодня, завтра и через 10 лет.
Хеш от файла на 5 ГБ считается за секунды. Это практическая необходимость.
Изменение одного бита меняет ~половину бит хеша. Никакой корреляции.
По хешу невозможно восстановить исходные данные. Только перебором всех вариантов.
Практически невозможно найти два разных входа с одинаковым хешем. Именно здесь MD5 сломался, а SHA-256 — держится.
Хеш неотличим от случайной строки. Даже если вход был «111111», хеш выглядит как шум.