ToolActToolAct

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

Вычисление MD5, SHA-1, SHA-256, SHA-384, SHA-512 хэша файла

Загрузка файла

Перетащите файл сюда

Поддерживаются файлы любого типа и размера

Выберите алгоритм хэширования
MD5
128 бит
SHA-1
160 бит
SHA-256
256 бит
SHA-384
384 бит
SHA-512
512 бит
Сравнение

Что такое хэш файла?

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

Как использовать

Как использовать

  1. Перетащите файл в область загрузки или нажмите кнопку «Select File»
  2. Отметьте нужные алгоритмы хеширования (можно выбрать несколько)
  3. Нажмите кнопку «Calculate Hash» для запуска
  4. После вычисления скопируйте отдельные значения хешей или все сразу
  5. Для проверки введите известное значение хеша в поле сравнения

Процесс проверки

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

Применение

Вычисление нескольких дайджестов файла из одной загрузкиПеретащи файл и выбери MD5 (128 бит), SHA-1 (160 бит), SHA-256 (256 бит), SHA-384 (384 бит), SHA-512 (512 бит) в любом сочетании, чтобы получить хеши локально с индикатором прогресса. Файл считывается в память и в браузере передаётся в crypto.subtle.digest (семейство SHA) или в JavaScript-процедуру MD5; двоичное содержимое не покидает устройство и подходит для проприетарной прошивки, внутренних сборок и неопубликованных артефактов.
Проверка опубликованной контрольной суммы по выбранным алгоритмамВставьте ожидаемый хэш до или после вычисления, и страница определит совпавший алгоритм, когда одно из сгенерированных значений совпадёт со строкой сравнения. Совпадение проверяется по нормализованному нижнему регистру hex, поэтому верхний регистр у издателя и нижний регистр локальной генерации сопоставляются без ручного перенабора.
Использование более стойких хэшей для решений о доверииMD5 и SHA-1 полезны для унаследованных проверок и поиска дубликатов (у обоих известны атаки на коллизии), но SHA-256 или выше — более безопасный выбор для проверки загрузок и обнаружения подделок. SHA-256 даёт 64-символьный hex-дайджест без известных коллизий, а SHA-384/512 ещё больше повышают планку для высоконадёжных пайплайнов релизов. Для очень крупных релизных артефактов BLAKE3 встречается всё чаще, поскольку он примерно в 3–4 раза быстрее SHA-256 на современных процессорах (стабильная пропускная способность в диапазоне ГБ/с) при сохранении древовидной структуры Меркла с поддержкой верифицированного потокового чтения, хотя селекторы алгоритмов в этом инструменте по-прежнему охватывают семейство SHA, которое большинство издателей публикует.
Хэширование каждой части раздельного архива отдельноКрупные загрузки часто приходят кусками .001, .002 или .zipx с покусочным хешем (обычно SHA-1 или SHA-256). Хешируй каждый кусок и сверяй с опубликованным списком от поставщика перед объединением, потому что один несовпадающий кусок ломает собранный файл — эта страница позволяет применять один и тот же алгоритм ко всем кускам, не загружая их. Каждый кусок перед хешированием читается в память браузера, поэтому практический потолок — это то, сколько может уместить heap вкладки; если кусок его превышает, переходи на настольный инструмент (sha256sum, certutil -hashfile, Get-FileHash), который читает с диска потоково.
Использование поля сравнения для регистронезависимого сопоставленияНекоторые издатели публикуют хэш в верхнем регистре hex, другие — в нижнем. Вставьте ожидаемое значение один раз, и страница сопоставит по идентификатору алгоритма и нормализованному регистру, поэтому ручной перенабор регистра не нужен для чистой проверки — один и тот же дайджест в 'A591A6...' и 'a591a6...' даёт успешное совпадение.

Технический принцип

Все SHA-дайджесты на странице вычисляются через W3C Web Cryptography API, доступный в браузере как crypto.subtle. Вызов выглядит как await crypto.subtle.digest(algorithm, buffer), где algorithm — одно из 'SHA-1', 'SHA-256', 'SHA-384' или 'SHA-512' (с учётом регистра), а buffer — ArrayBuffer или любой TypedArray. Функция возвращает Promise, который разрешается в ArrayBuffer с байтами дайджеста; страница обходит его как Uint8Array и преобразует каждый байт через byte.toString(16).padStart(2, '0') в строчное шестнадцатеричное представление. SubtleCrypto доступен только в безопасных контекстах (HTTPS или localhost); SHA-1 сохраняется для совместимости с легаси, но спецификация прямо называет его сломанным с точки зрения коллизионной стойкости. MD5 в спецификацию Web Crypto не входит (W3C намеренно его опустил из-за коллизионных атак), поэтому MD5 на этой странице считает чистая JavaScript-реализация, работающая целиком в браузере. Для всех алгоритмов — MD5 и SHA — файл считывается за один проход в ArrayBuffer через FileReader.readAsArrayBuffer и передаётся либо JavaScript-процедуре MD5, либо crypto.subtle.digest. Инкрементального API .append и резервного Web Worker'а в этом инструменте нет, поэтому памяти должно хватать на весь файл сразу: для обычных загрузок это нормально, но для нагрузок в несколько ГБ лучше подойдёт настольный инструмент, потоково читающий с диска (sha256sum, certutil -hashfile, Get-FileHash). Длины дайджестов и состояние с точки зрения безопасности: MD5 = 128 бит / 32 hex-символа (RFC 1321, коллизионная стойкость взломана с 2004 года Ван Сяоюнь, использовано на практике вредоносом Flame в 2012 году); SHA-1 = 160 бит / 40 hex-символов (FIPS 180-4, коллизия продемонстрирована Google SHAttered в 2017 году за ~9,2 × 10^18 вычислений SHA-1, NIST планирует официальный вывод после 2030 года); SHA-256 = 256 бит / 64 hex-символа (FIPS 180-4, известных коллизий нет, рекомендуемая планка); SHA-384 и SHA-512 = 384 / 512 бит, усечённый и полный вывод семейства SHA-512 (FIPS 180-4). Лавинный эффект криптографических хешей означает, что переворот одного бита входа в среднем меняет около половины выходных битов, поэтому правка одного байта даёт совершенно другой дайджест.

  • crypto.subtle.digest(algorithm, buffer) принимает 'SHA-1', 'SHA-256', 'SHA-384', 'SHA-512' (с учётом регистра) и отклоняет 'MD5'; требует безопасный контекст (HTTPS или localhost) и возвращает Promise<ArrayBuffer>.
  • Hex-кодирование: перебор результата как new Uint8Array(digestBuffer) с отображением каждого байта в byte.toString(16).padStart(2, '0'); сравнение дайджестов без учёта регистра (нормализация через .toLowerCase()).
  • MD5 намеренно отсутствует в Web Crypto; этот инструмент вычисляет MD5 на чистом JavaScript, читая файл одним вызовом FileReader.readAsArrayBuffer в единый ArrayBuffer и выдавая 32-значный строчный hex-дайджест за один проход.
  • Профиль памяти: страница читает весь файл в один ArrayBuffer (без инкрементального .append-API и без выноса в Web Worker) и одним вызовом передаёт буфер либо JavaScript-реализации MD5, либо crypto.subtle.digest. Для файлов, превышающих доступную heap вкладки, используйте настольный инструмент (sha256sum, certutil -hashfile, Get-FileHash), потоково читающий с диска.
  • Размеры дайджестов (FIPS 180-4): MD5 128 бит, SHA-1 160 бит, SHA-256 256 бит, SHA-384 384 бита, SHA-512 512 бит; количество hex-символов вдвое больше количества байтов.
  • Известные атаки на коллизии: MD5 сломан Wang 2004, эксплуатирован Flame 2012; SHA-1 сломан Google SHAttered 2017 (~9,2 x 10^18 операций, ~110 GPU-лет); SHA-256 и выше не имеют известных практических коллизий.
  • Лавинный эффект: изменение одного бита входа в среднем переворачивает ~50% выходных битов; поэтому редактирование одного байта даёт совершенно другой hex-дайджест, а частичные совпадения файлов невозможны.

Примеры

Проверка скачанного файла по опубликованной контрольной сумме

Файл: sample.bin (3 байта, содержимое: abc)

SHA-256 (вычислено):
  ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

Строка в опубликованном SHA256SUMS:
  ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad  sample.bin

Совпадение -> загрузка цела, не подделана

(Оба значения — это эталонный вектор SHA-256 по FIPS 180-2 для
3-байтного входа 'abc'. На практике замените вход реальным файлом;
выход алгоритма детерминирован.)

Сравнение нескольких алгоритмов на одном входе

Файл: sample.txt (3 байта, содержимое: abc)

MD5:     900150983cd24fb0d6963f7d28e17f72
SHA-1:   a9993e364706816aba3e25717850c26c9cd0d89d
SHA-256: ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-512: ddaf35a193617abacc417349ae20413112e6fa4e89a97ea20a9eeee64b55d39a2192992a274fc1a836ba3c23a3feebbd454d4423643ce80e2a9ac94fa54ca49f

Разные алгоритмы, один и тот же вход -> используйте SHA-256 или сильнее для проверок безопасности

(MD5 — эталонный вектор RFC 1321; остальные — эталонные векторы
FIPS 180-2, все для 3-байтного входа 'abc'.)

Обнаружение изменения 1 байта (лавинный эффект)

Вход A:  abc  (3 байта)
Вход B:  abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq  (56 байт)

SHA-256 от A:  ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
SHA-256 от B:  248d6a61d20638b8e5c026930c3e6039a33ce45964ff2167f6ecedd419db06c1

Малое изменение во входных данных даёт совершенно другой
дайджест -> это и есть лавинный эффект.

(Оба значения — это эталонные векторы SHA-256 по FIPS 180-2.)

Справочные команды консоли браузера для проверки

// Воспроизведение в Node.js для сравнения
$ printf 'abc' | shasum -a 256
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

// PowerShell в Windows
PS> 'abc' | Get-FileHash -Algorithm SHA256 | Select-Object -ExpandProperty Hash
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad

// В консоли браузера, используя Web Crypto API:
// const buf = new TextEncoder().encode('abc');
// const hash = await crypto.subtle.digest('SHA-256', buf);
// -> ArrayBuffer с SHA-256 от 'abc' (эталонный вектор FIPS 180-2)

Файлы остаются в вашем браузере, ничего не загружается.

Часто задаваемые вопросы

Какие алгоритмы хеширования доступны?

Обычно это MD5, SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512. Семейство SHA вычисляется через Web Crypto API браузера, а MD5 — встроенной реализацией на JS. Сегодня для общих задач рекомендуется SHA-256.

Загружается ли файл куда-либо?

Нет. Хеширование полностью выполняется в браузере с помощью File API и Web Crypto. Байты читаются в память кусками, и хеш считается локально — файл не уходит в сеть. Это легко проверить во вкладке Network во время хеширования.

Зачем оставлять MD5, если он сломан?

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

Почему у одинаковых на вид файлов разные SHA-256?

Хеш считается по каждому байту, поэтому один лишний перевод строки в конце, BOM или другой стиль переноса (CRLF против LF) полностью меняет хеш. Скачайте оригинал заново, а не копируйте через буфер обмена, либо откройте оба файла в бинарном просмотрщике, чтобы убедиться, что байты совпадают.

Есть ли ограничение на размер файла?

Браузеру нужно достаточно памяти, чтобы прочитать файл. Современные настольные браузеры справляются с файлами в несколько ГБ, но мобильные могут не вытянуть и нескольких сотен МБ. Для очень больших файлов используйте настольные утилиты (sha256sum, certutil, Get-FileHash) — они потоково читают с диска и работают быстрее.

Могут ли два разных файла дать одинаковый хеш?

В теории да (принцип Дирихле), но для SHA-256 вероятность астрономически мала. У MD5 и SHA-1 известны атаки на коллизии, поэтому совпадение MD5 или SHA-1 у двух файлов не доказывает, что это один и тот же файл. Для SHA-256 практически реализуемых атак на коллизии нет.

Почему мои хеши не совпадают с хешем, опубликованным на сайте?

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

Связанные инструменты

Инструмент проверки MD5 файла

Бесплатный онлайн-инструмент для вычисления MD5 файла. Проверяйте целостность файлов, обнаруживайте изменения и убеждайтесь, что файлы не повреждены.

Генератор хэшей

Бесплатный онлайн-генератор хэшей: MD5, SHA-1, SHA-256 и SHA-512. Мгновенно вычисляйте хэш текста для проверки целостности данных и хранения паролей.

Генератор MD5-хеша

Инструмент шифрования MD5 онлайн с опциями вывода 16 и 32 бит, преобразование регистра. Генерация MD5 хеш-значений для проверки данных.

Генератор паролей

Бесплатный онлайн-генератор надёжных паролей с настраиваемой длиной и наборами символов. Создавайте случайные пароли локально в браузере.

Упаковка файлов

Бесплатный онлайн-инструмент для упаковки файлов в ZIP-архив. Добавляйте файлы перетаскиванием и скачивайте готовый архив локально в браузере.

Распаковка ZIP

Бесплатный онлайн-распаковщик ZIP-архивов: загрузите архив, просмотрите файлы и скачайте нужные или сразу все. Распаковка идёт локально в браузере.