Как проверить целостность файла с помощью SHA-256
Сравниваем контрольную сумму скачанного архива с доверенным значением и разбираем, что такая проверка доказывает, а чего она не подтверждает.

В этой статье
Архив загрузился без видимой ошибки, но этого недостаточно, чтобы уверенно использовать его для восстановления или обновления. Контрольная сумма помогает проверить, совпадают ли байты с ожидаемым файлом. При этом важно, откуда взято ожидаемое значение: недоверенный архив вместе с недоверенной суммой не становится надёжным.
Вычислите сумму готового файла
Пример рассчитан на GNU Coreutils в Linux. Файл archive.tar.gz — условное имя: подставьте свой путь и дождитесь полного завершения загрузки.
sha256sum -- archive.tar.gz
Команда читает весь файл и выводит хеш вместе с именем. Для большого архива это создаёт дисковую нагрузку. Не вычисляйте сумму файла, который ещё изменяется: результат не будет стабильной характеристикой окончательной версии.
Сравнивать нужно всё значение, а не первые и последние несколько символов. Если есть доверенный файл контрольных сумм в поддерживаемом формате, проверку удобнее поручить утилите:
sha256sum --check SHA256SUMS
Проверьте происхождение ожидаемой суммы
Файл SHA256SUMS в примере должен быть получен из доверенного источника. Совпадение с суммой, присланной тем же неизвестным отправителем вместе с архивом, подтверждает согласованность пары, но не подлинность поставщика.
Если разработчик публикует подписанный список сумм, проверка подписи — отдельная задача с доверенным ключом. Не подменяйте её простым сравнением SHA-256. Точно так же совпадение хеша не означает отсутствие вредоносного кода в исходном файле.
Разберите неуспешную проверку
Несовпадение может означать повреждение при передаче, другой выпуск, изменившийся файл или неверно выбранную ожидаемую сумму. Сначала сравните имя, версию и размер. Не пытайтесь «исправить» список сумм под скачанный архив, чтобы получить успешный результат.
Сообщение о невозможности открыть файл отличается от несовпадения содержимого. Проверьте рабочий каталог и пути внутри списка. При автоматизации учитывайте код завершения и не скрывайте сообщения, объясняющие причину отказа.
Пример с резервной копией
Если архив скопировали на другой носитель, сравнение хеша до и после передачи помогает проверить побайтовое совпадение. Но для рабочего резервирования этого мало: архив может быть целым и при этом не содержать нужной базы данных или относиться к неправильному моменту времени.
Поэтому храните рядом сведения о том, что именно архивировалось и когда. Проверка восстановления в отдельной среде отвечает на другой вопрос — можно ли вернуть работоспособную систему. Хеш эту проверку не заменяет.
Что считать завершённой проверкой
Зафиксируйте имя и версию файла, источник ожидаемой суммы, алгоритм и результат сравнения. Если файл затем изменяется или пересобирается, прежняя проверка к нему больше не относится. Перед использованием убедитесь, что это тот же проверенный объект.
При несовпадении остановите использование конкретного файла и разберитесь с источником. Успех нужен не ради зелёной надписи, а ради понятной цепочки: ожидаемый выпуск, доверенная сумма, полностью полученный файл и точное совпадение его содержимого.
The archive downloaded without visible errors, but that is not enough to confidently use it for recovery or updates. A checksum helps verify whether the bytes match the expected file. Crucially, the source of the expected value matters: an untrusted archive paired with an untrusted checksum does not become reliable.
Calculate the checksum of the completed file
The example is calculated for GNU Coreutils on Linux. The file archive.tar.gz is a placeholder name: substitute your path and wait for the download to complete fully.
sha256sum -- archive.tar.gz
The command reads the entire file and outputs the hash along with the filename. For a large archive, this creates disk load. Do not calculate the checksum of a file that is still being modified; the result will not be a stable characteristic of the final version.
Compare the entire value, not just the first and last few characters. If a trusted checksum file in a supported format is available, it is more convenient to delegate the verification to a utility:
sha256sum --check SHA256SUMS
Verify the origin of the expected checksum
The file SHA256SUMS in the example must be obtained from a trusted source. A match with the checksum sent by the same unknown sender along with the archive confirms the consistency of the pair, but not the authenticity of the provider.
If a developer publishes a signed list of checksums, verifying the signature is a separate task requiring a trusted key. Do not substitute it with a simple SHA-256 comparison. Similarly, a matching hash does not guarantee the absence of malicious code in the source file.
Analyze a failed verification
A mismatch may indicate corruption during transfer, a different release, a modified file, or an incorrectly selected expected checksum. First, compare the name, version, and size. Do not attempt to "fix" the checksum list to match the downloaded archive just to achieve a successful result.
A message stating that a file cannot be opened differs from a content mismatch. Check the working directory and paths within the list. When automating, account for the exit code and do not hide messages explaining the reason for failure.
Example with a backup
If an archive is copied to another storage medium, comparing the hash before and after transfer helps verify byte-for-byte matching. However, this is insufficient for operational backups: the archive may be intact yet lack the required database or correspond to the wrong point in time.
Therefore, store details alongside the archive about exactly what was archived and when. Verifying restoration in a separate environment answers a different question—whether a functional system can be recovered. A hash does not replace this verification.
What constitutes a completed verification
Record the file name and version, the source of the expected checksum, the algorithm, and the comparison result. If the file is later modified or rebuilt, the previous check no longer applies. Before using it, ensure this is the same verified object.
If there is a mismatch, stop using the specific file and investigate the source. Success is needed not for a green label, but for a clear chain: the expected release, a trusted checksum, a fully received file, and an exact match of its contents.

Обсуждение 0
Делись опытом и задавай вопросы. Комментарии без ссылок появляются после проверки редактором.
Пока никто не написал. Начни обсуждение.