Пакетный хеш файлов и проверка манифеста

Выберите или перетащите много файлов сразу, и эта страница вычислит дайджесты MD5, SHA-1, SHA-256, SHA-384 или SHA-512 для каждого из них, полностью внутри вашего браузера. Затем либо скопируйте результаты как строки, совместимые с sha256sum, для собственных заметок о выпуске, либо вставьте манифест контрольных сумм (SHA256SUMS, .sha256, .sfv, вывод BSD openssl dgst), и страница укажет, какие файлы прошли проверку, какие не совпали и каких нет. Ничего никуда не загружается. Для одного файла с большим числом алгоритмов см. Генератор хешей.
Перетащите файлы сюда или нажмите, чтобы выбрать их
До 50 файлов, по 200 МБ каждый. Файлы остаются на этом компьютере.
Файлы не выбраны.
— вывод в шестнадцатеричном виде; выберите хотя бы один.
Нажмите любую ячейку дайджеста, чтобы скопировать её. Имена и размеры всегда перечислены, так что таблица одновременно служит пакетным просмотром размеров файлов.
Таблица дайджестов появится здесь, когда вы выберете файлы и нажмёте «Вычислить».
Вставьте манифест в стиле GNU (хеш  имя), BSD (SHA256 (имя) = хеш), SFV (имя crc32) или простом (sha256=хеш), либо загрузите сам файл .sha256 / SHA256SUMS / .sfv. Строки, начинающиеся с ;, считаются комментариями.
Конфиденциальность: каждый дайджест вычисляется собственным JavaScript и движком WebCrypto браузера — файлы никогда не покидают эту вкладку. Совет: после проверки загрузки эту страницу можно закрыть; ничего не сохраняется.

Что такое пакетный хеш файлов?

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

Делать это по одному файлу за раз нормально для одной загрузки. Как только у вас есть папка файлов или архив релиза с манифестом SHA256SUMS внутри, нужна пакетная версия: хешировать каждый файл один раз, затем проверять каждую строку манифеста против соответствующего файла. Именно этот цикл и автоматизирует страница.

Форматы манифеста, которые читает эта страница

СтильПример строкиГде вы с ним встречаетесь
GNU900150983c...  hello.txtвывод sha256sum / md5sum, файлы SHA256SUMS в релизах Linux
BSDSHA256 (hello.txt) = 900150983c...openssl dgst -sha256 в macOS/BSD
SFVhello.txt 1A2B3C4Dфайлы Simple File Verification, старые двоичные группы новостей
простойsha256=ba7816bf...страницы загрузок, заметки о выпуске, контрольные суммы Docker

Сама длина хеша определяет алгоритм: 32 шестнадцатеричных символа означают MD5, 40 — SHA-1, 64 — SHA-256, 96 — SHA-384 и 128 — SHA-512 — поэтому строкам формата GNU не нужно указывать, какая программа их создала.

Как это работает, коротко

Каждый файл один раз читается через FileReader браузера и передаётся в crypto.subtle.digest (семейство SHA) и локальную реализацию MD5. Дайджесты кодируются в шестнадцатеричный вид и выстраиваются рядом с записями манифеста; файл считается проверенным только тогда, когда вычисленный дайджест посимвольно совпадает с ожидаемым. Строки SFV содержат CRC-32 вместо криптографического хеша — страница помечает их как неподдерживаемые, а не делает вид, что CRC — это дайджест.

Распространённые ошибки

«У всех моих файлов несовпадение.» — обычная причина в том, что манифест составлен для другой версии загрузки. Сначала проверьте имена файлов: сопоставление идёт по базовым именам, поэтому dist/app-1.2.bin совпадает со строкой манифеста для app-1.2.bin. «SHA-1 проверен, значит, файл безопасен?» — нет. Проверка доказывает, что байты совпадают с тем, что выпустил издатель; надёжен ли издатель, — другой вопрос. А SHA-1 со взломанными коллизиями с 2017 года, поэтому при выборе предпочитайте манифесты SHA-256.

Частые вопросы

Медленно ли хешировать большой файл? — примерно секунда на 200 МБ на обычном компьютере; строка прогресса показывает, насколько продвинулся пакет.
Можно ли проверить манифест SFV с CRC-32? — строки SFV разбираются и перечисляются, но CRC-32 эта страница не вычисляет; для отдельных файлов используйте инструмент CRC на хабе криптографии.
Почему только шестнадцатеричный вид? — манифесты в реальности шестнадцатеричные; дайджесты в base64 — это отдельная возможность.
Что происходит с моими файлами? — ничего: нет сервера, нет хранения, нет аналитики; закройте вкладку, и каждый байт входа исчезнет.