Контрольная сумма и проверка целостности данных
💻 Информатика · 9 класс
Что такое контрольная сумма
Контрольная сумма — это небольшое число, которое вычисляют по содержимому данных и хранят или передают вместе с ними. Получатель повторяет вычисление и сравнивает результат с присланной контрольной суммой. Если значения не совпали, данные были искажены при передаче или хранении.
Контрольные суммы применяют при передаче файлов по сети, при записи на диск, в штрихкодах и банковских номерах. Они не исправляют ошибку, но позволяют её надёжно обнаружить, что уже очень важно: испорченный файл лучше не использовать.
Простейший способ: сумма по модулю
Самый понятный вариант — сложить все байты (или цифры) и взять остаток от деления на некоторое число. Например, остаток от деления на 256 даёт однобайтовую контрольную сумму, которая занимает всего один байт.
нач
цел data[1:5], i, cs
cs := 0
нц для i от 1 до 5
cs := cs + data[i]
кц
cs := mod(cs, 256)
вывод cs
кон
Контроль чётности
Ещё проще — бит чётности: к данным добавляют один бит так, чтобы общее число единиц стало чётным. Если при передаче изменился ровно один бит, чётность нарушится, и ошибка обнаружится при проверке.
| Данные | Число единиц | Бит чётности |
|---|---|---|
| 1011 | 3 | 1 |
| 1100 | 2 | 0 |
| 0000 | 0 | 0 |
| 1110 | 3 | 1 |
Правило: контрольная сумма обнаруживает ошибку, но не указывает, где именно она произошла, и обычно не исправляет её. Для исправления ошибок нужны более сложные помехоустойчивые коды.
Где встречается
Последняя цифра штрихкода и номера банковской карты — это контрольная цифра, вычисленная по остальным цифрам. При вводе номера программа сразу проверяет, не ошибся ли пользователь, и сообщает об опечатке ещё до отправки данных.
В компьютерных сетях контрольные суммы встроены в протоколы передачи: если пакет пришёл повреждённым, его отбрасывают и запрашивают заново. При скачивании больших файлов на сайтах часто публикуют их контрольную сумму, чтобы пользователь мог проверить, что файл загрузился без искажений и не был подменён.
Чем длиннее контрольная сумма, тем меньше вероятность, что искажённые данные случайно дадут ту же сумму, что и исходные. Поэтому для надёжной проверки больших файлов используют не один байт, а длинные суммы из многих разрядов.
Частые ошибки: считают, что контрольная сумма исправляет данные; забывают взять остаток и получают слишком большое число; простой бит чётности не замечает сразу двух изменённых битов, потому что чётность при этом сохраняется.
Кратко о главном
- Контрольная сумма вычисляется по содержимому данных.
- Несовпадение сумм означает искажение данных.
- Простые варианты: сумма по модулю и бит чётности.
- Метод обнаруживает ошибку, но не всегда исправляет.
- Применяется в сетях, штрихкодах и номерах карт.