Menu
Coddy logo textTech

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

Контрольная сумма (checksum) это короткое значение, вычисленное по блоку данных, например файлу или сетевому пакету, которое хранится или передаётся вместе с ним. Если позже вычислить его снова и сравнить два значения, станет видно, изменились ли данные из-за повреждения или ошибки передачи.

Автор: Kevin Spektor, Сооснователь и CTO

Обновлено 24 сентября 2026 г.

Контрольная суммаОтправленоПолученоРезультат
Сумма байтов (mod 256)1F1FСовпадает
CRC-32486C211B486C211BСовпадает

Инвертируй один бит, и обе контрольные суммы изменятся. Поменяй местами два символа: все байты на месте, поэтому их сумма та же. Заметит только CRC-32, которая зависит от порядка.

Дистрибутивы Linux, например Ubuntu и Debian, публикуют рядом с установочными образами файл SHA256SUMS. В каждой его строке записаны 64-символьная строка и имя файла. Когда скачивание закончится, ты запускаешь одну команду для полученного файла. Если она выведет ту же строку, все миллиарды его байтов дошли целыми. Если по дороге перевернулся хотя бы один бит, строка получится совсем другой.

Эта строка и есть контрольная сумма: небольшое резюме, которое меняется, когда меняются данные.

Как работает контрольная сумма, шаг за шагом

  1. Отправитель прогоняет по данным алгоритм контрольной суммы, байт за байтом, и получает короткий результат.
  2. Результат передаётся или хранится вместе с данными: в заголовке сетевого пакета, внутри ZIP-файла рядом с каждым сжатым файлом или на странице загрузки.
  3. Получатель прогоняет тот же алгоритм по данным, которые он действительно получил.
  4. Два результата сравниваются. Если они равны, данные почти наверняка не изменились. Если различаются, данные повреждены, и получатель их отклоняет, запрашивает снова или показывает ошибку контрольной суммы.

Контрольная сумма только обнаруживает повреждение; она не может сказать, какой байт изменился, и не может его восстановить. Для восстановления нужен код с исправлением ошибок, например коды Рида-Соломона на компакт-дисках и в QR-кодах.

Простейшая контрольная сумма складывает все байты и оставляет последние 8 битов суммы. Запусти этот код, чтобы увидеть, где эта идея работает, а где нет:

original  sum= 78  crc32=a1628836
flipped   sum= 80  crc32=a597580b
swapped   sum= 78  crc32=59dbf74b

Замена символа меняет сумму. Перестановка двух символов не меняет, потому что сложению неважен порядок, и сумма байтов одобряет платёж в 10 вместо 100. CRC-32 (циклический избыточный код) рассматривает данные как одно длинное двоичное число и делит его на фиксированный 33-битный многочлен; 32-битный остаток зависит от положения каждого бита, поэтому перестановка обнаруживается. Демонстрация выше позволяет попробовать это на своём тексте. CRC-32 обнаруживает любую пачку ошибок длиной до 32 битов.

Распространённые алгоритмы контрольных сумм

АлгоритмРазмерГде встречается
Бит чётности1 битПоследовательные соединения, память с контролем чётности
Контрольная цифра Луна1 цифраНомера банковских карт, номера IMEI
Контрольная сумма интернета16 битовЗаголовки IPv4, TCP и UDP
Adler-3232 битаФормат сжатия zlib
CRC-3232 битаZIP, gzip, PNG, кадры Ethernet
MD5128 битовСтарые страницы загрузки, поиск дубликатов файлов
SHA-256256 битовЗагрузка программ, образы Linux, Bitcoin

Первые пять ловят случайности, а не злоумышленников. Тот, кто редактирует файл, может подогнать несколько байтов так, чтобы CRC-32 снова совпал. MD5 и SHA-256 это криптографические хеш-функции, устроенные так, чтобы найти два входа с одинаковым результатом было практически невозможно. С тех пор MD5 взломан (коллизии опубликованы в 2004 году), как и SHA-1 (2017), поэтому для загрузок, где важна безопасность, используют SHA-256 или что-то сильнее. Случайные повреждения MD5 по-прежнему отлично ловит.

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

На твоём компьютере в каждой операционной системе есть встроенная команда:

# Windows (PowerShell)
Get-FileHash ubuntu.iso -Algorithm SHA256
# macOS
shasum -a 256 ubuntu.iso
# Linux
sha256sum ubuntu.iso

Сравни вывод со значением на официальной странице загрузки; заглавные или строчные буквы значения не имеют. В Python ту же проверку делает hashlib, читая файл частями, чтобы файл на 6 ГБ никогда не пришлось целиком держать в памяти:

a948904f2f0f479b8f8197694b30184b0d2ed1c1cd2a1ec0fb85d299a192a447
OK

Замени hello world на hello World и запусти снова: изменится каждый символ контрольной суммы, а последняя строка скажет Checksum mismatch.

Что такое ошибка контрольной суммы?

Ошибка контрольной суммы (checksum error) означает, что проверка не прошла: значение, вычисленное по имеющимся у тебя данным, не совпадает со значением, которое хранилось или передавалось вместе с ними. Либо изменились данные, либо повреждена сама сохранённая контрольная сумма. Сообщение и способ исправления зависят от того, где она появляется.

Ошибка контрольной суммы CMOS или BIOS при включении

Прошивка ПК (BIOS или UEFI) хранит свои настройки, например порядок загрузки и часы, в небольшой памяти, которую питает батарейка-таблетка, обычно CR2032, пока компьютер отключён от сети. Рядом с настройками хранится их контрольная сумма. При каждом включении прошивка вычисляет её заново, и если значения различаются, показывает сообщение вроде CMOS Checksum Error - Defaults Loaded и возвращается к заводским настройкам.

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

  1. Открой экран настроек (обычно Delete или F2 при включении ПК), установи дату, время и все параметры, которые ты менял, затем сохрани и выйди (часто F10). Если сообщение больше не появляется, это был разовый случай.
  2. Если оно возвращается после каждого холодного старта, выключи компьютер, отключи его от сети и замени батарейку CR2032.
  3. Если в сообщении упомянута сама прошивка, например BIOS ROM checksum error или Main BIOS checksum error, повреждён образ прошивки. Платы с резервной микросхемой BIOS восстанавливают его автоматически; на остальных воспользуйся функцией восстановления BIOS на плате или заново прошей прошивку с сайта производителя, не отключая питание во время обновления.

Несовпадение контрольной суммы после скачивания

SHA-256 твоего файла не совпадает с указанной на странице загрузки. Файл может быть неполным или повреждённым (прерванное соединение, заполненный диск), ты можешь сравнивать с контрольной суммой другого файла (другой версии или архитектуры процессора) или сравнивать два разных алгоритма: значение MD5 занимает 32 шестнадцатеричных символа, значение SHA-256 64. Изредка файл оказывается подменённым.

Проверь алгоритм и имя файла, затем скачай файл заново с официального сайта. Если свежая копия из официального источника всё равно не совпадает, не запускай её. Менеджеры пакетов делают эту проверку за тебя: pip останавливается с THESE PACKAGES DO NOT MATCH THE HASHES, когда скачанный пакет отличается от закреплённого хеша.

Ошибка контрольной суммы в архиве ZIP, RAR или 7z

Форматы архивов хранят CRC-32 исходного содержимого каждого файла. При распаковке программа вычисляет его заново; WinRAR сообщает о несовпадении как Checksum error, а 7-Zip как CRC Failed. У зашифрованного архива неверный пароль даёт то же сообщение, потому что с неверным паролем расшифровывается мусор. Скачай архив заново, убедись, что все части разбитого архива (.part1.rar, .part2.rar) на месте и взяты из одной и той же загрузки, и введи пароль ещё раз. Команда восстановления архива в WinRAR лучше всего работает с архивами, созданными с информацией для восстановления, а параметр «Оставить повреждённые файлы» (Keep broken files) сохраняет всё, что распаковалось правильно.

Ошибки контрольной суммы в играх и сетевых инструментах

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

Частые заблуждения

  • «Совпавшая контрольная сумма доказывает, что файл безопасен». Она доказывает, что файл совпадает с опубликованным значением. Если злоумышленник контролирует сайт, он может изменить и то и другое, поэтому проекты ещё и подписывают файлы с контрольными суммами ключом.
  • «Контрольная сумма может исправить повреждённый файл». Она только обнаруживает повреждение. Исправление в том, чтобы получить хорошую копию.
  • «Контрольная сумма и хеш это разные вещи». Контрольная сумма описывает задачу; хеш-функция вроде SHA-256 это один из инструментов, который может её решать.

Что читать дальше

Вычисли значения MD5, SHA-1 и SHA-256 для любого текста в генераторе хешей. Контрольные суммы работают с сырыми данными, поэтому страницы что такое байт и что такое бит объясняют, что именно складывается. База данных использует контрольные суммы страниц, чтобы ловить повреждения на диске, а визуализация хеш-таблицы показывает ещё одно применение короткого значения, вычисленного по данным.

Часто задаваемые вопросы

SHA-256 это контрольная сумма?
Да, когда его используют для проверки данных. SHA-256 это криптографическая хеш-функция, и 64-символьное значение, которое она выдаёт для файла, обычно называют контрольной суммой SHA-256 этого файла. Она медленнее CRC-32, но защищает и от намеренных изменений, потому что на практике никто не может создать другой файл с тем же значением SHA-256.
Как исправить ошибку контрольной суммы?
Зависит от того, где она появляется. При включении компьютера зайди в настройки BIOS, проверь дату и параметры, сохрани и выйди, а если ошибка вернётся, замени батарейку CMOS. После скачивания или в архиве скачай файл заново из официального источника и убедись, что все части разбитого архива на месте и пароль верный.
Из-за чего возникает ошибка контрольной суммы?
Данные изменились между моментом, когда была вычислена их контрольная сумма, и моментом проверки. Частые причины: прерванное скачивание, умирающий диск или флешка, слабая батарейка CMOS, отключение питания во время записи настроек или прошивки и неверный пароль у зашифрованного архива.
Зачем нужна контрольная сумма?
Накопители и сети не идеальны. Биты переворачиваются из-за электрических помех, радиоинтерференции, изношенной флеш-памяти или выходящих из строя дисков, и без проверки повреждённые данные молча пошли бы в работу. Контрольная сумма это дешёвый способ заметить повреждение, чтобы данные можно было отправить снова или отклонить.
Как вычислить контрольную сумму файла?
Прогони по данным алгоритм контрольной суммы. Для файла используй sha256sum file в Linux, shasum -a 256 file в macOS или Get-FileHash file в Windows PowerShell. В Python hashlib.sha256(data).hexdigest() даёт контрольную сумму SHA-256, а zlib.crc32(data) даёт CRC-32.
Coddy programming languages illustration

Учитесь программировать с Coddy

НАЧАТЬ