P
pro·school.ru
Каталог школ

Контрольная сумма и проверка целостности данных

💻 Информатика · 9 класс

Что такое контрольная сумма

Контрольная сумма — это небольшое число, которое вычисляют по содержимому данных и хранят или передают вместе с ними. Получатель повторяет вычисление и сравнивает результат с присланной контрольной суммой. Если значения не совпали, данные были искажены при передаче или хранении.

Контрольные суммы применяют при передаче файлов по сети, при записи на диск, в штрихкодах и банковских номерах. Они не исправляют ошибку, но позволяют её надёжно обнаружить, что уже очень важно: испорченный файл лучше не использовать.

Простейший способ: сумма по модулю

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

нач цел data[1:5], i, cs cs := 0 нц для i от 1 до 5 cs := cs + data[i] кц cs := mod(cs, 256) вывод cs кон

Контроль чётности

Ещё проще — бит чётности: к данным добавляют один бит так, чтобы общее число единиц стало чётным. Если при передаче изменился ровно один бит, чётность нарушится, и ошибка обнаружится при проверке.

ДанныеЧисло единицБит чётности
101131
110020
000000
111031
Правило: контрольная сумма обнаруживает ошибку, но не указывает, где именно она произошла, и обычно не исправляет её. Для исправления ошибок нужны более сложные помехоустойчивые коды.

Где встречается

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

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

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

Частые ошибки: считают, что контрольная сумма исправляет данные; забывают взять остаток и получают слишком большое число; простой бит чётности не замечает сразу двух изменённых битов, потому что чётность при этом сохраняется.

Кратко о главном

  • Контрольная сумма вычисляется по содержимому данных.
  • Несовпадение сумм означает искажение данных.
  • Простые варианты: сумма по модулю и бит чётности.
  • Метод обнаруживает ошибку, но не всегда исправляет.
  • Применяется в сетях, штрихкодах и номерах карт.