Как контрольная сумма замечает повреждение

Файл можно представить как длинную последовательность битов — нулей и единиц. Контрольная сумма сжимает эту последовательность в короткое значение, рассчитанное по определённому правилу. Перед отправкой отправитель вычисляет такое значение, а после загрузки получатель запускает тот же алгоритм для полученного файла.

Если при передаче изменился хотя бы один фрагмент данных, итоговая сумма обычно будет другой. Например, сбой на диске или помеха в канале связи могут превратить часть битов в другие. Сравнение даёт быстрый способ проверить целостность, не сверяя файл побитно вручную.

Почему короткое значение может проверять большой файл

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

Однако совпадение не является математическим доказательством, что файлы идентичны: разные данные теоретически могут дать одинаковое значение. И главное, проверка отвечает на вопрос «изменились ли данные относительно эталона?», а не «кто и зачем их изменил?». Если злоумышленник заменит файл и одновременно подменит контрольную сумму, простое сравнение не защитит. Для подтверждения подлинности нужны дополнительные средства, например цифровая подпись.

Эталон важнее самого сравнения

Чтобы проверка была полезна, получателю нужно доверенное исходное значение — например, опубликованное создателем программы по защищённому каналу. Тогда несовпадение служит сигналом остановить установку или повторно скачать файл, а совпадение помогает убедиться, что переданная копия соответствует проверяемому эталону.