Контрольная сумма
Контрольная сумма SHA-256
Обновлено:
Контрольная сумма отвечает на простой вопрос: совпадает ли скачанный файл с тем, что опубликовал разработчик. Если файл повредился при загрузке или был подменён, значение будет другим.
На этой странице
Что сравнивать
SHA-256 выдаёт строку из 64 шестнадцатеричных символов: цифры от 0 до 9 и буквы от a до f. Сравнивать нужно всю строку, а не первые и последние знаки. Регистр букв роли не играет: PowerShell печатает значение заглавными буквами, утилиты Linux — строчными, но число от этого не меняется.
Команды по системам
| Система | Инструмент | Команда |
|---|---|---|
| Windows, PowerShell | Get-FileHash | Get-FileHash .\app.apk |
| Windows, командная строка | certutil | certutil -hashfile app.apk SHA256 |
| macOS, Терминал | shasum | shasum -a 256 app.apk |
| Linux | sha256sum | 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 эталон можно передать самой утилите, и она сообщит, совпало ли значение. Между хешем и именем файла ставятся два пробела:
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 даст то же значение.
Источники
- Get-FileHash — Microsoft Learnlearn.microsoft.com
- certutil — Microsoft Learnlearn.microsoft.com
- sha2 utilities — GNU Coreutilsgnu.org
- Android Debug Bridge (adb)developer.android.com