7,2K подписчиков

Контрольная сумма: проверка MD5 хэша файла

5,6K прочитали

Предположим, у вас есть увесистый дистрибутив софта в формате .iso, гигабайт на 5, например, и вы хотите передать его через сеть партнеру. Вы загружаете его на FTP сервер и даете ссылку партнеру, мол «На, скачивай, дружище!». Ваш партнер скачивает его и работает с ним. Думаете этого достаточно? Нет. Сейчас объясним почему.

ЗАЧЕМ СВЕРЯТЬ КОНТРОЛЬНУЮ СУММУ?

Дело в том, что при загрузке файла из сети файл может прилететь к вам побитым. Да –да, вы не ослышались. Любой .iso это так или иначе, набор блоков данных. И при скачивании, а особенно по нестабильному FTP, он может «крашнуться».

И чтобы избежать этого, используется следующий алгоритм передачи файла. Его последовательность такова:

  • Владелец файла считает контрольную сумму рабочего файла (по MD5, например);
  • Загружает файл на публичное хранилище и передает контрольную сумму получателю файла;
  • Получатель файла скачивает файл, считает его контрольную сумму на своей стороне и сверяет ее с оригинальной, которую посчитал владелец файла;
  • Получатель и Владелец кидают смешные стикеры в Telegram друг другу из стикерпака про лягушку Пепе.

КАК РАБОТАЕТ КОНТРОЛЬНАЯ - ПРОСТЫМ ЯЗЫКОМ

Контрольная сумма - результат некой хэш – функции. Запомнили. Далее, что такое хэш – функция? Это функция, которая получает на вход массив данных, «прокручивает» эти данные по определенному алгоритму и дает на выходе битовую строку, длина которой задана заранее.

Не вдаваясь в подробности сложных алгоритмов, так это и работает:

Как работает контрольная - простым языком
Как работает контрольная - простым языком
  • Массив данных на вход (файл);
  • Магия внутри;
  • Контрольная сумма на выходе!

КАК РАССЧИТАТЬ КОНТРОЛЬНУЮ СУММУ?

Будем использовать криптографическую функцию MD5. Скачиваем утилиту WinMD5Sum по ссылке: https://sourceforge.net/projects/winmd5sum/. Установите ее и идем дальше.

Итак, вот мой заветный дистрибутив. Лежит в папке:

Как проверить контрольную сумму на деле
Как проверить контрольную сумму на деле

Запускаем WinMD5Sum:

Проверить контрольную сумму через WinMD5Sum
Проверить контрольную сумму через WinMD5Sum

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

Зачастую, как только вы выберите файл в поле File Name через кнопку поиску (три точки), то подсчет хэша начнется без нажатия на кнопку Calculate.
Контрольная сумма подсчитана WinMD5Sum
Контрольная сумма подсчитана WinMD5Sum

Огонь. Копируйте значение из поля MD5 Sum и сохраняйте себе отдельно. Теперь, по легенде, мы берем этот файл и отправляем другу/партнеру/коллеге. Выкладываем файл на FTP, а контрольную сумму передаем ему отдельно – по смс, емаил, в чате. Далее, давайте рассмотрим процесс с точки зрения получателя файла.

КАК СВЕРИТЬ КОНТРОЛЬНУЮ СУММУ?

Мы получили файл и его контрольную сумму. Как ее проверить? Все так же, как и при расчете контрольной суммы! Сначала считаем контрольную сумму скачанного файла:

Контрольная сумма подсчитана WinMD5Sum
Контрольная сумма подсчитана WinMD5Sum

С одним лишь отличием. Теперь мы берем контрольную сумму которая была посчитана ранее, вставляем ее в поле Compare и нажимаем кнопку Compare:

Проверка контрольной суммы WinMD5Sum
Проверка контрольной суммы WinMD5Sum

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

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