ttools
безопасностьфайлыхешированиепроверка

Как проверить контрольную сумму файла и убедиться в целостности

Пошаговое руководство по вычислению и проверке хешей файлов для верификации скачиваний, резервных копий и защиты от повреждений.

Вы скачали образ Linux на 4 ГБ, а при установке система ругается на битый файл. Или загрузили важный архив с резервными копиями, но он не распаковывается. Контрольная сумма (хеш) помогает понять, что файл дошёл без искажений — ещё до того, как вы потратите время на работу с ним.

Что такое контрольная сумма и зачем она нужна

Контрольная сумма — это уникальная строка символов, вычисленная из содержимого файла математическим алгоритмом. Один бит отличия в файле — и хеш полностью меняется. Самые популярные алгоритмы: MD5, SHA-1, SHA-256.

Основные сценарии использования:

  • Проверка целостности скачиваний — дистрибутивы Linux, официальные образы Windows, крупные архивы всегда публикуют хеш на сайте
  • Защита от подмены — если кто-то модифицировал файл (вредонос, MITM-атака), хеш не совпадёт
  • Контроль резервных копий — убедиться, что бэкап не повредился на диске или в облаке
  • Дедупликация — облачные хранилища сравнивают хеши, чтобы не хранить одинаковые файлы дважды

Как вычислить хеш в командной строке

Linux и macOS

В терминале доступны готовые утилиты:

# MD5
md5sum файл.iso

# SHA-256
sha256sum файл.iso

# На macOS команды чуть другие
md5 файл.iso
shasum -a 256 файл.iso

Вывод выглядит так:

a3f2e1b4c5d6... файл.iso

Первая часть — сам хеш, вторая — имя файла.

Windows

Используйте встроенную утилиту certutil:

certutil -hashfile файл.iso MD5
certutil -hashfile файл.iso SHA256

Или PowerShell:

Get-FileHash файл.iso -Algorithm SHA256
Get-FileHash файл.iso -Algorithm MD5

Как проверить совпадение хеша

Допустим, вы скачали ubuntu-24.04-desktop-amd64.iso. На сайте Ubuntu указан SHA-256:

2c2f9b5e8a3d1f... (официальный хеш с сайта)

Вычисляете хеш локального файла:

sha256sum ubuntu-24.04-desktop-amd64.iso

Получаете:

2c2f9b5e8a3d1f... ubuntu-24.04-desktop-amd64.iso

Совпадает символ в символ — файл целый. Хоть один символ отличается — файл повреждён или подменён.

Автоматическая проверка

Многие проекты публикуют файл с хешами (например, SHA256SUMS). Проверка в одну команду:

sha256sum -c SHA256SUMS

Утилита пройдёт по списку, проверит все файлы и покажет OK или FAILED для каждого.

MD5, SHA-1 или SHA-256: какой выбрать

MD5 — устарел для задач безопасности (возможны коллизии — разные файлы с одинаковым хешем), но всё ещё подходит для быстрой проверки целостности скачиваний. Самый быстрый из трёх.

SHA-1 — компромисс, но тоже считается устаревшим. С 2017 года доказана уязвимость к коллизиям.

SHA-256 — стандарт сегодня. Криптостойкий, используется везде: от блокчейна до сертификатов SSL. Если нужна безопасность, только он.

Практический совет: для проверки скачиваний подойдёт любой алгоритм, который указал разработчик. Для подписи собственных файлов или архивов — используйте SHA-256 или выше (SHA-512).

Графические инструменты для проверки хеша

Не все хотят лезть в терминал. Альтернативы:

  • HashTab (Windows) — расширение проводника, добавляет вкладку с хешами в свойствах файла
  • GtkHash (Linux) — GUI-приложение с поддержкой всех популярных алгоритмов
  • QuickHash (Windows, Linux, macOS) — кросс-платформенная утилита с пакетной обработкой

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

Частые ошибки при проверке

Ошибка 1: Сравниваете хеш до завершения скачивания. Браузер может показывать файл в папке, пока ещё дописывает последние мегабайты. Дождитесь 100%.

Ошибка 2: Путаете алгоритмы. Сайт дал SHA-256, а вы вычислили MD5 — конечно не совпадёт.

Ошибка 3: Опечатка в имени файла или лишний пробел в команде. sha256sum file.iso (с пробелом) может дать неожиданный результат в некоторых скриптах.

Ошибка 4: Игнорируете регистр. Хеши обычно в нижнем регистре, но если копируете с сайта — проверьте, нет ли случайных заглавных букв.

Автоматизация проверки в скриптах

Если регулярно скачиваете и проверяете файлы, напишите простой скрипт. Пример для Linux:

#!/bin/bash
FILE="ubuntu-24.04-desktop-amd64.iso"
EXPECTED="2c2f9b5e8a3d1f4b7c9e2a5d8f1b4e7c"

ACTUAL=$(sha256sum "$FILE" | awk '{print $1}')

if [ "$ACTUAL" = "$EXPECTED" ]; then
    echo "✓ Хеш совпал, файл целый"
else
    echo "✗ Хеш не совпал! Файл повреждён или подменён"
    exit 1
fi

Для Windows аналогичный скрипт на PowerShell:

$file = "ubuntu-24.04-desktop-amd64.iso"
$expected = "2c2f9b5e8a3d1f4b7c9e2a5d8f1b4e7c"

$actual = (Get-FileHash $file -Algorithm SHA256).Hash.ToLower()

if ($actual -eq $expected) {
    Write-Host "✓ Хеш совпал" -ForegroundColor Green
} else {
    Write-Host "✗ Хеш не совпал" -ForegroundColor Red
    exit 1
}

Дополнительные инструменты для работы с файлами

Проверка хеша — лишь один из шагов работы с файлами. Если нужно быстро узнать размер, тип или другие метаданные, попробуйте Информация о файле — инструмент показывает детали без скачивания файла на устройство. Для кодирования данных в Base64 (например, для передачи бинарных файлов через JSON API) пригодится Base64 кодировщик.

Инструменты по теме