Найти в Дзене
Pro.Cod1ng

Хеширование — что это и зачем?!

Что такое хеш? Если говорить простым языком, то хеширование (хеш, криптографическая хеш-функция) — это определённый математический алгоритм, позволяющий преобразовать огромный массив данных в строку фиксированной длины, состоящую из букв и цифр. Если же использовать тот же самый алгоритм на другом объёме входных данных, то длина получившейся строки не изменится. Отличная хеш-функция должна соответствовать как минимум следующим двум критериям: Как работает хеш? Например, слово, обозначающее перемещение кого-либо или чего либо с помощью каких-то транспортных средств — везти — после преобразования одной из самых популярных хеш-функций SHA-1 будет выглядеть так:
5459e8a10440911df9146dee45e3387d9359581c
Некоторые невнимательные люди могут допустить в этом слове ошибку и тем самым придать ему совершенно другое значение — вести. Если прогнать данное слово через тот же самый алгоритм SHA-1, то сможем увидеть следующее:
b5849eaeb19291d05732ae4d0266231f8a4d354b
Как видите, результаты значительно
Оглавление

Что такое хеш?

Если говорить простым языком, то хеширование (хеш, криптографическая хеш-функция) это определённый математический алгоритм, позволяющий преобразовать огромный массив данных в строку фиксированной длины, состоящую из букв и цифр.

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

Отличная хеш-функция должна соответствовать как минимум следующим двум критериям:

  1. Быстрое вычисление;
  2. Минимальное количество «коллизий» (ситуация, когда несколько разных входных значений дают одинаковый хеш).

Как работает хеш?

Например, слово, обозначающее перемещение кого-либо или чего либо с помощью каких-то транспортных средств — везти после преобразования одной из самых популярных хеш-функций SHA-1 будет выглядеть так:
5459e8a10440911df9146dee45e3387d9359581c
Некоторые невнимательные люди могут допустить в этом слове ошибку и тем самым придать ему совершенно другое значение вести. Если прогнать данное слово через тот же самый алгоритм SHA-1, то сможем увидеть следующее:
b5849eaeb19291d05732ae4d0266231f8a4d354b
Как видите, результаты значительно отличаются друг от друга, даже несмотря на то, что разница между двумя исходными словами в одной букве.

Однако все получившиеся строки объединяет одно - получившаяся строка имеет длину 40 символов. Казалось бы, ничего удивительного, ведь все введенные мною слова также имели одинаковую длину — 5 букв. Однако если вы прогоните известное стихотворение Михаила Юрьевича Лермонтова «Парус»

Белеет парус одинокой
В тумане моря голубом!..
Что ищет он в стране далекой?
Что кинул он в краю родном?..
Играют волны — ветер свищет,
И мачта гнется и скрипит…
Увы! он счастия не ищет,
И не от счастия бежит!
Под ним струя светлей лазури,
Над ним луч солнца золотой…
А он, мятежный, просит бури,
Как будто в бурях есть покой!

через алгоритм хеш-функции SHA-1, то всё равно получите последовательность, состоящую из 40 символов:
98d460d97bb8b1993424551ec8a9e863baeca9f0

Всё выше сказанное можно изобразить в виде схемы:

-2

Для чего используется хеш?

Самая распространенная область применения хеширования — хранение паролей. Никогда не задумывались, почему при восстановлении пароля на многих ресурсах нас просят придумать новый, а не просто показывают забытый? Дело в том, что большинство онлайн-сервисов не хранят пароли в привычном для нас виде — в виде обычного текста. Вместо этого пароли хранится в виде хеш-значений. То есть даже сам сервис не может знать, как в действительности выглядит ваш пароль. Исключение составляют только те случаи, когда пароль очень прост и его хеш-значение широко известно в кругах взломщиков. Таким образом, если вы, воспользовавшись функцией восстановления, вдруг получили старый пароль в открытом виде, то можете быть уверены: используемый вами сервис не хеширует пользовательские пароли, что очень плохо.

Ещё одна распространенная, но неочевидная для обычного пользователя, область применения хеш-функций — скачивание файлов из Интернета. Каждый пользователь Всемирной Сети сталкивался с хеш-функциями сам того не осознавая. В процессе скачивания можно заметить, что файл имеет странное название — череда непонятных цифр и латинских букв. Именно эта последовательность странных символов и является хешем или если говорить более конкретно — контрольная сумма. В данном случае контрольная сумма применяется для проверки целостности скачиваемого файла. Контрольная сумма файла передаётся вместе с самим файлом. После скачивания контрольная сумма вычисляется заново и сравнивается с переданным значением. Если обнаружено расхождение, значит при передаче возникли искажения.

Также хеширование активно используется в антивирусных программах, блокчейне и в системе электронно-цифровых подписей (ЭЦП).