Фото Григорьева Ивана

👋 Добро пожаловать! Меня зовут Григорьев Иван, я backend-разработчик. Пишу на PHP, Python. В данный момент живу в городе Кемерово.

💼 Работаю консультантом по разработке ПО в Кузбасс-ЦОТ

Сайт использует HUGO и Bootstrap. Хостинг Firebase.
Icon made by Freepik perfect from www.flaticon.com.

Что такое хеш

image from Что такое хеш

К примеру, вы разрабатываете приложение которое показывает пользователю картинки. Для этого предварительно скачивает их из интернета. Но вот беда, связь плохая, пару битов потерялось и пользователю показывается битая картинка или вообще приложение падает.

Или представьте, вы сделали сайт. Пользователи регистрируются, делают свои пользовательские дела, лайкают, пишут новости. А пришел злоумышленик и украл пароли.

Для решения проблем в данных примерах нам поможет хеш или же хеш-сумма.

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

С помощью хеш-функции мы получаем хеш:

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

Теперь возникает другая проблема: так как у нас фиксированное количество символов в хеше (а обычно это не много, 128 или 256 бит), возникает вероятность вычисления одинаковых хешей. Данное совпадение хешей называется коллизией.

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

Напоследок, примеры хешей разных алгоритмов слова тест:

MD5: 098f6bcd4621d373cade4e832627b4f6
SHA1: a94a8fe5ccb19ba61c4c0873d391e987982fbbd3
CRC32: accf8b33

Поделиться:

comments powered by Disqus