Как проверить несколько файлов по списку хешей: пошаговая инструкция для Windows, Linux и macOS

Если у вас есть папка с файлами и текстовый список хеш-сумм (например, после загрузки архива данных или передачи файлов от коллеги), задача сводится к двум шагам: вычислить хеш каждого файла и сравнить результат со списком. Вручную это делать не нужно — все основные системы умеют проверять файлы пакетно по готовому файлу списка. Ниже — как это сделать в Windows, Linux и macOS, какие форматы списков бывают и что делать при расхождении.

Зачем вообще сверять хеши и когда это нужно

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

Типичные ситуации:

  • вы скачали набор файлов (дистрибутивы, образы дисков, архивы) и у вас есть официальный список контрольных сумм;
  • вам передали большой объём данных на внешнем носителе, и нужно проверить целостность до удаления источника;
  • вы делаете резервные копии и хотите периодически убеждаться, что копии читаются без ошибок;
  • нужно убедиться, что несколько версий набора файлов идентичны.

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

Шаг 1. Определите алгоритм и формат списка

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

Алгоритм

Посмотрите на длину строки: MD5 даёт 32 символа, SHA-1 — 40, SHA-256 — 64, SHA-512 — 128 шестнадцатеричных символов. Используйте именно тот алгоритм, которым считался список: хеш MD5 никогда не совпадёт с хешем SHA-256 одного и того же файла. Если алгоритм нигде не указан, ориентируйтесь на длину строки. Предпочтение отдавайте SHA-256 и сильнее; MD5 сегодня пригоден только для проверки случайных повреждений, но не для защиты от подмены.

Формат строк

Чаще всего встречаются два варианта:

  • Стандартный формат GNU/BSD: сначала хеш, потом два пробела (или пробел и звёздочка), затем имя файла. Пример: d41d8cd98f00b204e9800998ecf8427e document.pdf. Именно под него заточены утилиты md5sum, sha256sum в Linux и shasum -c в macOS.
  • Просто пары «хеш + имя» через пробел или табуляцию, иногда с полными путями. Такой список можно привести к стандартному виду или обработать вручную.

Также обратите внимание на регистр: некоторые генераторы пишут хеш заглавными буквами. Большинство утилит сравнивают без учёта регистра либо корректно обрабатывают оба варианта, но если проверка неожиданно «провалилась» при визуально совпадающих строках, регистр — первая вещь, которую стоит проверить.

Шаг 2. Подготовьте структуру папок

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

  1. Поместите файл со списком (обычно он называется вроде checksums.sha256, MD5SUMS или hashes.txt) в корневую папку набора файлов — туда же, куда указывают относительные пути из списка.
  2. Откройте терминал или командную строку и перейдите в эту папку командой смены каталога.
  3. Убедитесь, что имена файлов в списке совпадают с реальными с точностью до символа, включая расширения и регистр букв (на Linux и macOS регистр значим).

Если в списке указаны абсолютные пути с другого компьютера (например, C:\Users\ivan\downloads\…), их придётся поправить под вашу структуру — обычная замена текста в редакторе решает проблему.

Шаг 3. Запустите проверку

Linux

В Linux всё встроено. Для стандартного списка:

  • sha256sum -c checksums.sha256 — проверка по SHA-256;
  • md5sum -c MD5SUMS — проверка по MD5;
  • аналогично работают sha1sum и sha512sum.

Утилита пройдёт по всем строкам списка, посчитает хеш каждого файла и выведет для каждого «OK» или «FAILED». Добавьте ключ —quiet, чтобы видеть только проблемы, а не подтверждения по каждому файлу. Если список в другом формате, его можно нормализовать: например, убрать лишние столбцы с помощью awk или sed так, чтобы осталась пара «хеш имя файла», а затем скормить результат той же утилите.

Если списка нет, а есть только отдельные хеши, можно сгенерировать свой список и сравнить: sha256sum *.iso > my.sums, затем сравнить содержимое my.sums с эталоном командой diff — но этот способ чувствителен к порядку строк и пробелам, поэтому надёжнее нормализовать оба списка (отсортировать и привести к одному виду) перед сравнением.

macOS

В macOS есть совместимая утилита shasum (Perl-скрипт) и BSD-версии md5/shasum. Удобнее всего:

  • shasum -a 256 -c checksums.sha256 — проверка списка SHA-256;
  • md5 -r файл — быстрый расчёт MD5 одного файла, если нужно проверить точечно.

Флаг -c работает так же, как в Linux, и ожидает стандартный формат списка. Если список создан на Windows в кодировке с BOM или с переводами строк CRLF, shasum может споткнуться — пересохраните список в UTF-8 без BOM с переводами строк LF.

Windows

В современных Windows есть встроенная утилита certutil, работающая в командной строке:

  • certutil -hashfile «имя_файла» SHA256 — считает хеш одного файла.

Certutil проверяет по одному файлу за вызов, поэтому для пакета удобнее небольшой цикл в PowerShell, который читает ваш список и сравнивает значения. Логика такая: прочитать строки списка, для каждой извлечь хеш и имя файла, вычислить фактический хеш через Get-FileHash и вывести совпадение или расхождение. Готовые скрипты такой проверки легко находятся, но даже собственный цикл из десяти строк справляется с задачей.

Альтернатива — установить набор GNU-утилит (например, через подсистему WSL или пакет Git for Windows, где есть bash): тогда работают те же команды sha256sum -c, что и в Linux. Если вы регулярно работаете со списками хешей, вариант с WSL обычно оказывается самым простым.

Как читать результаты проверки

Результат Что означает Что делать
OK / совпадает Содержимое файла побитово соответствует тому, для которого считался хеш в списке Ничего, файл цел относительно списка
FAILED / не совпадает Файл повреждён, изменён или это другая версия файла Перекачать/запросить файл заново; повторить проверку
Нет такого файла Путь или имя в списке не соответствуют реальным Сверить структуру папок и имена, исправить список или расположение
Ошибка чтения Файл заблокирован, нет прав или носитель сбоит Закрыть программы, проверить права и состояние диска

Отдельно про расхождения: единичный FAILED почти всегда означает повреждение при передаче или скачивании — просто получите файл заново и проверьте снова. Если новый файл снова не сходится, сверьте, тем ли алгоритмом считался список и ту ли версию файла вы ожидаете (разные сборки и ревизии имеют разные хеши). Массовые расхождения по всем файлам чаще говорят о проблеме с самим списком: неверный алгоритм, лишние символы, другая кодировка или устаревшая версия набора.

Типичные ошибки

  • Неверный алгоритм. Проверка SHA-256 списком от MD5 даст сто процентов «провалов». Всегда сверяйте длину хеша в списке с ожидаемой для выбранной команды.
  • Несовпадение путей. Команда запущена не из той папки, либо в списке абсолютные пути другого компьютера. Решается переходом в нужный каталог или правкой списка.
  • Кодировка и переводы строк. Список, сохранённый в Excel или блокноте с BOM и CRLF, может ломать разбор в Unix-утилитах. Пересохраните в UTF-8 без BOM.
  • Лишние столбцы. Размер, дата или номер строки рядом с хешем мешают парсеру. Оставьте только хеш и имя файла.
  • Доверие самому списку. Список, скачанный с того же зеркала, что и файлы, не защищает от подмены. Берите суммы с официального источника или по независимому каналу.
  • Частичная проверка. «Проверил пару файлов наугад» не гарантирует целостность остальных. Запускайте проверку по всему списку — она автоматическая и занимает столько же времени, сколько чтение всех файлов один раз.

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

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

Если вы регулярно принимаете или передаёте большие наборы файлов, заведите привычку сразу генерировать список сумм вместе с данными (sha256sum * > SHA256SUMS в Linux/macOS, PowerShell-скрипт с Get-FileHash в Windows) и прикладывать его к передаче. Это превращает проверку целостности из разовой проблемы в стандартную двухминутную процедуру.

PEFile.ru