Контрольная сумма

Контрольная сумма SHA-256

Обновлено:

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

На этой странице

Что сравнивать

SHA-256 выдаёт строку из 64 шестнадцатеричных символов: цифры от 0 до 9 и буквы от a до f. Сравнивать нужно всю строку, а не первые и последние знаки. Регистр букв роли не играет: PowerShell печатает значение заглавными буквами, утилиты Linux — строчными, но число от этого не меняется.

Команды по системам

СистемаИнструментКоманда
Windows, PowerShellGet-FileHash
Get-FileHash .\app.apk
Windows, командная строкаcertutil
certutil -hashfile app.apk SHA256
macOS, Терминалshasum
shasum -a 256 app.apk
Linuxsha256sum
sha256sum app.apk
Android через компьютерadb
adb shell sha256sum /sdcard/Download/app.apk
Android на телефонетерминал с доступом к файлам
sha256sum /sdcard/Download/app.apk

В Get-FileHash алгоритм SHA-256 выбран по умолчанию, так что параметр -Algorithm можно не указывать. В Android команда sha256sum входит в системный набор утилит toybox, поэтому устанавливать её отдельно не нужно.

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

В Linux и macOS эталон можно передать самой утилите, и она сообщит, совпало ли значение. Между хешем и именем файла ставятся два пробела:

Linux · macOS
echo "эталон  app.apk" | sha256sum -c
echo "эталон  app.apk" | shasum -a 256 -c

При совпадении появится строка app.apk: OK. В PowerShell проще сравнить строки: (Get-FileHash .\app.apk).Hash -eq "эталон" вернёт True или False, причём регистр букв оператор -eq не учитывает.

Где взять эталон

Эталонное значение публикует сам разработчик, например в описании релиза или отдельным файлом .sha256. Некоторые разработчики выкладывают контрольную сумму прямо на странице скачивания — так делает, например, JoyCasino. Цифры из комментариев, с форумов и из сторонних каталогов эталоном не считаются.

Чего проверка не доказывает

  • Совпадение подтверждает целостность файла, но не честность источника: тот, кто контролирует страницу, может заменить и файл, и опубликованный хеш.
  • Поэтому сумма дополняет проверку подписи APK, а не заменяет её.
  • Имя файла на результат не влияет: хеш считается только по содержимому, и переименованный APK даст то же значение.

Источники