Скачивая установочный образ, архив или обновление, вы получаете файл «вслепую»: внешне он выглядит нормально, но внутри может оказаться обрыв загрузки или подменённое содержимое. Простой способ это проверить — сравнить хеш (контрольную сумму) скачанного файла со значением, которое публикует источник. В macOS для этого не нужно ничего устанавливать: встроенная утилита shasum считает хеши SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512 прямо из Терминала.
Главный принцип: хеш — это «отпечаток» файла. Если хотя бы один байт отличается, отпечаток меняется полностью. Совпадение хеша означает, что содержимое побайтово совпадает с оригиналом; расхождение — что файл был изменён или повреждён, и использовать его нельзя.
Что такое хеш и зачем его проверять
Хеш-функция принимает данные любого размера и выдаёт строку фиксированной длины, например 64 шестнадцатеричных символа для SHA-256. Обратной операции нет: по хешу нельзя восстановить файл, но можно надёжно установить факт совпадения или различия содержимого.
На практике проверка хеша решает три задачи:
- Целостность. Загрузка оборвалась, диск дал сбой, архив распаковался с ошибкой — хеш сразу покажет расхождение.
- Подлинность. Если разработчик публикует официальный хеш, а вы скачиваете файл через зеркало или посредника, сверка выявит подмену.
- Идентичность копий. При переносе файлов между компьютерами или на флешке можно убедиться, что копия идентична оригиналу.
Важно понимать ограничение: хеш подтверждает целостность относительно значения, взятого из доверенного источника. Если злоумышленник контролирует и сайт, откуда вы качаете файл, и страницу с хешем, сверка ничего не даст. Поэтому эталонное значение берут с официального сайта разработчика, а ещё лучше — по защищённому каналу (HTTPS) или из подписанного сообщения.
Базовый синтаксис shasum
Откройте приложение «Терминал» (Программы → Утилиты → Терминал). Базовая команда выглядит так:
- shasum -a 256 /путь/к/файлу.dmg — посчитать SHA-256;
- shasum -a 512 /путь/к/файлу.iso — посчитать SHA-512;
- shasum /путь/к/файлу.zip — без флага -a по умолчанию считается SHA-1.
Результат выводится одной строкой: сначала хеш, затем имя файла. Например:
a3f5c9…e71b2d ubuntu-24.04-desktop-amd64.iso
Чтобы не набирать путь вручную, перетащите файл из Finder прямо в окно Терминала — путь вставится автоматически. Ещё удобнее сначала перейти в папку с файлом командой cd ~/Downloads, а затем указывать только имя файла.
Какой алгоритм выбрать
Алгоритм должен совпадать с тем, который использовал источник эталонного значения. Сверять SHA-256 файла с опубликованным MD5 бессмысленно — строки просто не совпадут по длине. Ориентируйтесь так:
| Алгоритм | Длина строки | Когда используется |
|---|---|---|
| MD5 | 32 символа | Встречается в старых инструкциях; криптографически устарел, для проверки подлинности ненадёжен |
| SHA-1 | 40 символов | Алгоритм по умолчанию в shasum; тоже считается устаревшим для задач безопасности |
| SHA-256 | 64 символа | Стандарт де-факто: большинство проектов публикуют именно его |
| SHA-512 | 128 символов | Используется там, где нужна повышенная стойкость или длинные строки |
Если источник публикует несколько вариантов, предпочтительнее SHA-256 или SHA-512. MD5 и SHA-1 годятся только для проверки случайных повреждений, но не защиты от намеренной подмены.
Сверка результата с эталоном
Сравнивать длинные строки глазами неудобно и рискованно: легко пропустить один символ. Есть два надёжных способа.
Способ 1: автоматическая проверка через файл
Многие проекты распространяют текстовый файл с контрольными суммами (обычно с расширением .sha256, .sha512 или SHA256SUMS). Сохраните его в ту же папку, что и загруженный файл, и выполните:
- Перейдите в папку: cd ~/Downloads.
- Запустите проверку: shasum -a 256 -c имя_файла.sha256.
- Прочитайте результат: строка вида имя_файла: OK означает совпадение, FAILED — расхождение.
Флаг -c (check) заставляет shasum прочитать список «хеш + имя файла» из текстового файла и сверить каждый элемент. Если в списке есть файлы, которых у вас нет, утилита сообщит об их отсутствии — это нормально, главное, чтобы нужный файл получил статус OK.
Способ 2: ручная сверка без ошибок
Если эталонное значение есть только на веб-странице, скопируйте его и вставьте в команду сравнения:
echo «СКОПИРОВАННЫЙ_ХЕШ имя_файла.dmg» | shasum -a 256 -c —
Здесь дефис в конце означает «читать список из стандартного ввода». Утилита сама сравнит посчитанный хеш с указанным и выведет OK или FAILED. Это исключает человеческую ошибку при визуальном сопоставлении.
Типичные ошибки и как их избежать
- Несовпадающий алгоритм. Самая частая причина ложной тревоги: файл целый, но вы считали SHA-1 вместо опубликованного SHA-256. Всегда сверяйте длину строки с эталоном до паники.
- Лишние пробелы и регистр. Хеш обычно записывается строчными буквами; при ручном вводе легко перепутать ноль с буквой O или единицу с буквой l. Копируйте значение, а не набирайте вручную.
- Неправильный файл. Проверяйте именно тот файл, который будете использовать: если после загрузки архив распакован, хеш нужно считать для исходного архива, а не для распакованного содержимого.
- Изменённый файл после проверки. Хеш действителен только на момент подсчёта. Если вы что-то дописали в файл, переименование, впрочем, на хеш не влияет — важна лишь содержимое.
- Эталон из недоверенного источника. Хеш, скопированный с того же зеркала, что и сам файл, проверяет только целостность передачи, но не подлинность.
Сценарии использования
Вы скачали ISO-образ дистрибутива Linux. На сайте проекта почти всегда есть файл SHA256SUMS. Скачайте его рядом с образом, выполните cd ~/Downloads и shasum -a 256 -c SHA256SUMS. Статус OK для вашего образа — можно записывать на флешку.
Разработчик прислал архив по почте или через мессенджер. Попросите отправителя сообщить SHA-256 заранее, отдельным каналом. После получения посчитайте хеш и сверьте методом с echo и дефисом.
Вы перенесли большой файл на внешний диск. Посчитайте хеш до копирования и после — значения должны совпасть. Это дешевле, чем потом выяснять, что резервная копия не читается.
Инструкция указывает только MD5. Для проверки целостности этого достаточно, но если файл критичен для безопасности (установщик системы, кошелёк, драйвер), поищите проект с публикацией SHA-256 или цифровыми подписями.
Дополнительные возможности shasum
- shasum -a 256 *.zip — посчитать хеши всех zip-архивов в текущей папке одним запуском.
- shasum -a 256 -b файл.bin — вывести хеш в двоичном виде; на практике почти не нужен, но иногда требуется совместимостью со скриптами.
- Комбинация с поиском: find . -name «*.iso» -exec shasum -a 256 {} + — обработать все образы во вложенных папках.
Отдельно стоит упомянуть родственные утилиты macOS: md5 считает классический MD5, а shasum покрывает всё семейство SHA. Для большинства современных задач достаточно одного shasum с флагом -a 256.
Что делать дальше
Запомните одну рабочую связку: cd в папку с файлом, затем shasum -a 256 имя_файла, затем сверка скопированного эталона через echo … | shasum -a 256 -c -. Этой последовательности хватает для 90% бытовых ситуаций — от образов операционных систем до архивов от коллег.
Перед проверкой задайте себе два вопроса: откуда взято эталонное значение и тот ли самый файл я считаю. Если оба ответа вас устраивают, а статусы совпадают — файл можно использовать. Если хеш не сошёлся, не пытайтесь «докачать поверх»: удалите файл и загрузите заново, при повторном расхождении смените источник.
