Инструмент проверки MD5 файла
Вычисление MD5-хэша файла, проверка целостности файла
Перетащите файл сюда
Поддерживаются файлы любого типа и размера
Что такое MD5 файла?
MD5 (Message-Digest Algorithm 5) — широко используемый алгоритм хэширования, который преобразует содержимое любого файла в 128-битный (32 шестнадцатеричных символа) дайджест фиксированной длины. Любое малейшее изменение содержимого файла приводит к совершенно другому MD5-значению. Инструмент проверки MD5 файла commonly используется для проверки целостности файлов, гарантируя, что файл не был изменён или повреждён при передаче или загрузке. File MD5 часто используют, чтобы быстро проверить, не изменился ли файл и совпадает ли он с опубликованной контрольной суммой. Алгоритм быстрый и широко поддерживается, но из-за известных collision attacks он больше не подходит для криптографических решений доверия. MD5 еще встречается в старых проверках загрузок, простой дедупликации и совместимости. Для security-relevant проверки целостности лучше выбирать SHA-256 или более сильные алгоритмы, а checksum брать из доверенного источника.
Как использовать
Как использовать
- Нажмите на область загрузки или перетащите файл на страницу
- Нажмите кнопку «Calculate MD5»
- Дождитесь завершения расчёта и просмотрите значение MD5
- Вы можете ввести известное значение MD5 в разделе проверки для сравнения
Ограничения проверки
- MD5 подходит для быстрой проверки идентичности файлов, но не обладает достаточной устойчивостью к коллизиям для верификации, требующей безопасности.
- При загрузке или публикации файлов сравнивайте хеши из доверенного источника и по возможности используйте SHA-256.
Применение
Технический принцип
MD5 — это Message-Digest Algorithm 5, определённый в RFC 1321 (Ron Rivest, 1992). Он выдаёт дайджест длиной 128 бит / 16 байт, отображаемый как 32 шестнадцатеричных символа. Алгоритм построен по схеме Меркла-Дамгарда: вход дополняется так, чтобы его длина в битах была сравнима с 448 по модулю 512 (один бит 1, затем нули), исходная длина приписывается как 64-битное целое в формате little-endian, после чего сообщение делится на блоки по 512 бит. Каждый блок обновляет 128-битное внутреннее состояние (A, B, C, D), инициализированное константами A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476, выполняя 64 раунда в четырёх группах по 16 с побитовыми функциями F(x,y,z) = (x AND y) OR ((NOT x) AND z), G(x,y,z) = (x AND z) OR (y AND (NOT z)), H(x,y,z) = x XOR y XOR z и I(x,y,z) = y XOR (x OR (NOT z)), скомбинированными с раундовой константой T[i] = floor(2^32 * |sin(i+1)|) и циклическим сдвигом влево. Конечное состояние, склеенное в little-endian, и есть дайджест. MD5 пустого ввода — d41d8cd98f00b204e9800998ecf8427e, удобная контрольная точка работоспособности. Браузеры не выдают MD5 через crypto.subtle (спецификация W3C Web Crypto намеренно исключает MD5 из-за коллизионных атак), поэтому этот инструмент использует чистую JavaScript-реализацию MD5, работающую целиком в браузере. Файл загружается в память как ArrayBuffer, дайджест размером 16 байт вычисляется за один проход и отображается как 32 строчных шестнадцатеричных символа. Работа выполняется в главном потоке, поэтому хеширование многогигабайтного файла занимает этот поток до завершения; для очень больших файлов лучше использовать настольный инструмент, считывающий байты с диска в потоковом режиме. MD5 криптографически взломан в части коллизионной стойкости. Ван Сяоюнь и Юй Хунбо опубликовали первую практическую коллизионную атаку в 2004 году (CRYPTO 2005), снизив стоимость коллизии примерно до 2^39 операций. В 2008 году Sotirov и соавторы использовали коллизии с выбранным префиксом для подделки промежуточного CA-сертификата, а в 2012 году государственный вредонос Flame применил ранее неизвестную коллизию MD5 с выбранным префиксом, чтобы подделать сертификат подписи кода Microsoft Terminal Server Licensing. NIST запретил использование MD5 для цифровых подписей в SP 800-131A в 2011 году; CMU CERT выпустил уведомление об уязвимости VU#836068, охарактеризовав MD5 как 'unsuitable for further use'. MD5 по-прежнему допустим для обнаружения случайных повреждений (переворот одного бита меняет ~64 из 128 выходных битов из-за лавинного эффекта) и поиска дубликатов на доверенных входах, но не должен применяться там, где злоумышленник контролирует или может предсказать любой из входов.
- MD5 производит 128-битный / 16-байтный дайджест, кодируемый как 32 символа в нижнем регистре hex; определён в RFC 1321 (Rivest, 1992).
- Начальные константы состояния A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476; 64 раунда в четырёх группах по 16 с использованием побитовых функций F/G/H/I и констант раунда T[i] = floor(2^32 * |sin(i+1)|).
- MD5 от пустого входа — d41d8cd98f00b204e9800998ecf8427e — быстрая проверка корректности конвейера хэширования.
- Браузеры не выдают MD5 через crypto.subtle (W3C Web Crypto намеренно опускает его); этот инструмент использует чистую JavaScript-реализацию MD5: файл загружается как ArrayBuffer, дайджест в 16 байт вычисляется за один проход и выводится как 32 строчных шестнадцатеричных символа.
- Память: весь файл считывается в один ArrayBuffer до хеширования, поэтому файлы в несколько ГБ требуют соответствующей памяти вкладки; для файлов крупнее, чем вкладка способна вместить, используйте настольный инструмент (md5sum, certutil -hashfile, Get-FileHash), потоково читающий с диска.
- Атаки на коллизии: Wang и Yu (2004) ~2^39 операций; Sotirov и др. (2008) коллизия с выбранным префиксом для подделки поддельного сертификата CA; вредоносное ПО Flame (2012) использовало коллизию с выбранным префиксом для подделки сертификата подписи кода Microsoft.
- NIST SP 800-131A запретил MD5 для цифровых подписей в 2011 году; MD5 допустим только для неадверсариальных проверок целостности и обнаружения дубликатов — переключайтесь на SHA-256 или сильнее, когда контрольная сумма влияет на доверие.
Примеры
MD5 пустого файла (известная константа)
Файл: empty.txt (0 байт)
MD5: d41d8cd98f00b204e9800998ecf8427e
Это значение — MD5 пустого ввода -> быстрая проверка работоспособности
конвейера хеширования от начала до конца.
(Эталонный вектор RFC 1321 для пустой строки.)Проверка скачанного установщика
Файл: setup.bin (3 байта, содержимое: abc)
Вычисленный MD5: 900150983cd24fb0d6963f7d28e17f72
MD5 от поставщика: 900150983cd24fb0d6963f7d28e17f72
Совпадение -> файл скопирован или скачан корректно.
Несовпадение -> скачайте заново, байты повредились при передаче.
(Значение MD5 — эталонный вектор RFC 1321 для 3-байтного
входа 'abc'. На практике замените вход реальным установщиком;
выход алгоритма детерминирован.)Сравнение двух версий документа
report-v1.txt (0 байт) -> MD5: d41d8cd98f00b204e9800998ecf8427e
report-v2.txt (3 байта, содержимое: abc)
-> MD5: 900150983cd24fb0d6963f7d28e17f72
Разные хеши = разное содержимое. Даже изменение одного символа
даёт совершенно другой MD5 — так и работают проверки целостности.
(Оба значения — эталонные векторы MD5 по RFC 1321.)Строка hello world и файл
MD5("hello") = 5d41402abc4b2a76b9719d911017c592
MD5("hello\n") = b1946ac92492d2347c6235b4d2611184
Завершающий перевод строки изменяет дайджест, поэтому файл hello.txt
с таким содержимым, но без финального \n, соответствует первой строке, а
сохранённый с финальным \n — второй строке. Это
распространённая ловушка при сравнении с опубликованным MD5,
который был получен в другой операционной системе.Часто задаваемые вопросы
Файл отправляется на сервер?
Нет. MD5 считается локально в браузере через File API. Байты читаются в память кусками и хешируются, не покидая устройство. Это можно проверить во вкладке Network во время вычисления.
Безопасно ли ещё использовать MD5?
Для безопасности — нет. MD5 сломан с 2004 года: коллизии генерируются быстро, поэтому его нельзя использовать для цифровых подписей, хранения паролей или защиты от подделки. Он по-прежнему пригоден как быстрая контрольная сумма для выявления случайных повреждений (ошибок загрузки, дефектов диска).
Почему MD5 иногда выводится строчными, а иногда прописными буквами?
MD5 — это 128 бит = 16 байт = 32 шестнадцатеричных символа. Регистр символов — чисто оформительская деталь; сами байты идентичны, и любой корректный сравниватель должен сопоставлять их без учёта регистра.
Файл какого размера здесь можно посчитать?
Современные настольные браузеры тянут несколько ГБ, прежде чем закончится память. У мобильных запас меньше — обычно сотни МБ. Для очень больших файлов используйте системные команды (md5sum в Linux, certutil -hashfile в Windows, md5 в macOS) — они потоково читают с диска.
Почему мой MD5 отличается от результата другого инструмента?
Почти всегда из-за того, что вход отличается на байт: разные переводы строк (CRLF против LF), UTF-8 BOM, лишний пробел в конце или другая версия файла. Сам алгоритм детерминирован, поэтому одинаковый вход даёт одинаковый выход во всех корректных реализациях MD5.
В чём разница между MD5 текста и MD5 файла?
MD5 хеширует байты, а не символы. «MD5 текста» сначала кодирует строку (обычно в UTF-8) и хеширует получившиеся байты; «MD5 файла» читает байты файла напрямую. Одна и та же строка, сохранённая в UTF-8 и в UTF-16, даст разные значения MD5.
Можно ли с помощью MD5 находить дубликаты файлов?
Да, с оговоркой: известные коллизии MD5 означают, что злоумышленник может намеренно подобрать два разных файла с одинаковым MD5. Для поиска случайных дубликатов (фотографий, загрузок) MD5 быстр и достаточно надёжен. Для надёжной дедупликации используйте SHA-256.