Как сравнить хеш ISO-образа до и после записи на диск или флешку

Сравнение хеша ISO-образа до и после записи — это способ убедиться, что файл на носителе побитово совпадает с оригиналом. Главный принцип: хеш нужно считать не у файла образа дважды, а у файла до записи и у содержимого носителя после неё. Если сравнить два раза один и тот же ISO-файл, результат всегда совпадёт и ничего не проверит. Ниже разобрано, как правильно выполнить такую проверку на Windows, Linux и macOS, почему результаты иногда «не сходятся» даже при исправном диске и что делать в этих случаях.

Зачем вообще сверять контрольные суммы

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

Типичные ситуации, когда проверка действительно нужна:

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

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

Главное заблуждение: что именно сравнивать

Самая частая ошибка — посчитать хеш скачанного ISO-файла, затем ещё раз посчитать хеш этого же файла и обрадоваться совпадению. Такая проверка бессмысленна: она не затрагивает процесс записи и состояние носителя.

Правильная логика выглядит так:

  1. Вычислить хеш исходного ISO-файла на диске компьютера. Это эталон.
  2. Записать образ на носитель подходящим способом (об этом ниже — способ записи критичен).
  3. Прочитать данные уже с носителя — не с файла, а с устройства — и вычислить хеш прочитанного потока.
  4. Сравнить две строки. Совпадение означает, что запись прошла без искажений.

Сложность в том, что «прочитать данные с носителя» технически нетривиально: оптический диск и флешка устроены по-разному, и прямое побайтовое чтение возможно не всегда. Разберём оба случая отдельно.

Способ записи определяет возможность проверки

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

  • Флешка. Образ должен быть записан специальной программой, которая пишет содержимое ISO напрямую в устройство, сектор за сектором (Rufus в режиме DD, balenaEtcher, команда dd в Linux). Если вы просто скопировали ISO-файл на флешку в проводнике, загрузочным такой носитель почти наверняка не будет, а классическая сверка хеша неприменима — но сам файл можно сверить обычным образом.
  • DVD/CD. Запись должна выполняться в режиме «образ диска» (write image / burn image), а не как «диск с данными», куда файл просто кладётся внутрь. Программы вроде ImgBurn, Brasero, K3b имеют отдельный режим записи образа.

Если образ записан правильно, содержимое носителя представляет собой точную последовательность байт из файла — и её можно прочитать обратно для сверки.

Шаг 1. Вычисляем эталонный хеш ISO-файла

Windows

В Windows 10 и новее встроена утилита certutil. Откройте PowerShell или командную строку в папке с образом и выполните:

certutil -hashfile имя_файла.iso SHA256

Утилита выведет длинную шестнадцатеричную строку — это и есть контрольная сумма. Сохраните её в текстовый файл или скопируйте, чтобы потом сравнить.

Linux

В терминале:

sha256sum имя_файла.iso

Команда выведет хеш и имя файла. Аналогично работают md5sum и sha1sum, если источник публикует суммы другого алгоритма.

macOS

В Терминале:

shasum -a 256 имя_файла.iso

Какой алгоритм выбирать

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

Шаг 2. Проверяем хеш после записи на флешку

Здесь есть важная особенность. При записи образа на флешку многие программы (Rufus, некоторые режимы dd) создают на накопителе дополнительную структуру: расширяют последний раздел до полного объёма устройства или добавляют служебные данные. В результате размер флешки становится больше размера образа, и простое чтение всего устройства даст другой хеш — даже если образ записан идеально.

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

Linux и macOS

Определите имя устройства флешки (например, через lsblk в Linux или diskutil list в macOS — устройство будет вида /dev/sdX или /dev/diskN; будьте внимательны, чтобы не перепутать с системным диском). Затем прочитайте нужное количество байт и посчитайте сумму одним конвейером:

dd if=/dev/sdX bs=4M count=ЧИСЛО | sha256sum

где ЧИСЛО = размер образа в байтах, делённый на размер блока (4 МБ), округлённый вверх. Проще заранее узнать размер образа командой stat -c %s имя_файла.iso (Linux) или stat -f %z имя_файла.iso (macOS) и подобрать count так, чтобы count × размер блока был не меньше размера файла. Лишние байты исказят результат, поэтому точность здесь важна.

На macOS вместо /dev/diskN используйте /dev/rdiskN — чтение с «raw»-устройства заметно быстрее.

Windows

Встроенных средств для чтения «сырого» устройства с ограничением по числу байт в Windows нет. Практичные варианты:

  • использовать Rufus: в некоторых версиях есть функция проверки записанного носителя (галочка проверки после записи) — программа сама читает устройство назад и сверяет с образом;
  • использовать сторонние утилиты, умеющие хешировать физические диски с заданным размером области;
  • в среде WSL или Live-Linux применить тот же приём с dd, что описан выше.

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

Шаг 3. Проверяем хеш после записи DVD или CD

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

  • привод может добавлять или ожидать служебные секторы в конце дорожки, из-за чего размер прочитанных данных отличается от размера образа;
  • чтение последнего сектора иногда завершается ошибкой, хотя все полезные данные целы.

Поэтому самый надёжный путь — использовать функции самих программ записи. ImgBurn имеет режим Verify (проверка), который после записи перечитывает диск и сравнивает его с образом сектор за сектором. K3b и Brasero также предлагают проверку данных после записи. Такой верификатор учитывает особенности структуры диска и даёт корректный результат там, где ручной подсчёт хеша «в лоб» часто ложно показывает несовпадение.

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

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

Мелочь, которая портит немало проверок: сравнение строк «на глаз». Хеш — это 64 символа в случае SHA-256, и легко пропустить различие в середине строки. Надёжнее автоматизировать:

  • сохраните эталонную сумму в текстовый файл и используйте сравнение утилитой: в Linux — sha256sum -c файл_с_суммами.txt или echo «ХЕШ имя_файла.iso» | sha256sum -c -;
  • в PowerShell: (Get-FileHash файл.iso -Algorithm SHA256).Hash -eq «ХЕШ» — вернёт True или False;
  • при ручном сравнении вставьте обе строки в редактор и используйте поиск/сравнение, а не визуальное сопоставление.

Учитывайте регистр: одни утилиты выводят хеш заглавными буквами, другие строчными. Это не влияет на результат, но ломает буквальное сравнение строк — приведите обе к одному регистру.

Почему хеши могут не совпасть при исправной записи

Несовпадение сумм не всегда означает испорченный носитель. Прежде чем перезаписывать, разберитесь в причине:

  • Лишние данные на устройстве. Флешка больше образа, и вы прочитали всё устройство, а не только область образа. Самая частая причина ложной тревоги.
  • Образ был дополнен программой записи. Некоторые инструменты изменяют разметку разделов или дописывают загрузочные структуры. Читайте документацию программы: если она заявляет модификацию образа, побитовая сверка с оригиналом в принципе невозможна.
  • Гибридные образы и разные методы записи. Один и тот же ISO можно записать разными способами (ISO-режим против DD-режима в Rufus), и результаты будут различаться по структуре, хотя оба носителя могут быть рабочими.
  • Ошибка чтения, а не записи. Поцарапанный диск или проблемный привод может неверно читать данные при проверке. Попробуйте другой привод или повторите чтение.
  • Действительное повреждение. Дефектная болванка, изношенная флешка, сбой буферизации. Тогда перезапись на другой носитель обычно решает проблему.

Практическое правило: сначала исключите методологические причины (лишний объём, модификация образа), и только потом списывайте несовпадение на дефект записи.

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

  • Двойной подсчёт одного файла. Хеш считается у ISO до записи и у содержимого носителя после, а не у одного и того же файла дважды.
  • Копирование файла на флешку вместо записи образа. Носитель не будет загрузочным, а сверка хешей теряет смысл.
  • Чтение всей флешки вместо области образа. Гарантированное несовпадение из-за лишних байт в конце.
  • Игнорирование регистра и пробелов при сравнении. Строки различаются формально, хотя суммы одинаковы.
  • Использование MD5 для защиты от подмены. Для проверки случайных сбоев годится, для безопасности — нет; берите SHA-256 или выше.
  • Проверка сразу после записи на горячую флешку. Редко, но дешёвые накопители могут нестабильно читаться сразу после интенсивной записи; при сомнении переподключите устройство и повторите чтение.

Сценарии: что делать в вашей ситуации

Ситуация Что делать
Скачали ISO, хотим проверить целостность загрузки Посчитать SHA-256 файла и сравнить с суммой со страницы загрузки разработчика
Записали загрузочную флешку через Rufus/Etcher/dd Читать с устройства ровно размер образа и сверять хеш, либо использовать встроенную проверку программы
Записали DVD через ImgBurn/K3b Включить функцию Verify при записи или запустить её отдельно после записи
Хеш не совпал, но образ писался с модификацией Побитовая сверка неприменима; доверять отчёту программы записи или проверить работоспособность носителя загрузкой
Старый диск, нужно проверить сохранность Прочитать данные и сверить с ранее сохранённым эталонным хешем; при отсутствии эталона сверка возможна только с источником образа

Практические рекомендации

Если собрать всё в компактный порядок действий, рабочая последовательность выглядит так:

  1. Сохраните эталонный хеш ISO-файла (SHA-256) сразу после скачивания и сверьте его с официальным значением, если оно опубликовано.
  2. Запишите образ специализированной программой в режиме побитовой записи, а не копированием файла.
  3. Если инструмент предлагает проверку после записи — включите её: это самый простой корректный способ.
  4. При ручной проверке флешки читайте с устройства строго столько байт, сколько занимает образ.
  5. Сравнивайте суммы автоматически, а не глазами, приведя их к одному регистру.
  6. При несовпадении сначала исключите методологические причины, затем попробуйте другой носитель или привод.

И последнее: эталонный хеш стоит сохранить вместе с архивом образа. Через несколько лет, когда понадобится проверить старый диск или флешку, без заранее записанной суммы сверить будет не с чем — заново скачать образ удаётся не всегда, особенно для устаревших версий систем.

Материал носит информационный характер. Конкретные команды, параметры устройств и поведение программ записи зависят от версии ОС и используемого инструмента — перед работой с накопителями сверяйтесь с актуальной документацией и будьте внимательны при выборе имени устройства, чтобы не повредить данные на других дисках.

PEFile.ru