Все статьи
Криптография и безопасность

MD5 хеш: что это и безопасно ли использовать

Алгоритм MD5, хеширование, коллизии, почему MD5 не для паролей, где ещё можно использовать.

12 марта 2026
7 мин чтения
ConvertHub
Обновлено 07.09.2026
#md5#хеш#безопасность

Посчитайте прямо здесь: Text → MD5 Hash

Открыть инструмент целиком →

Введение

MD5 — один из самых известных хеш-алгоритмов в истории информатики. Разработанный Рональдом Ривестом в 1991 году, он десятилетиями использовался для проверки целостности файлов, хранения паролей и цифровой подписи. Сегодня MD5 считается криптографически сломанным, но всё ещё встречается в legacy-системах и в задачах, где безопасность не критична. В этой статье разберём, как устроен MD5, для чего он ещё годится и почему его нельзя использовать для паролей. Попробовать алгоритм в действии можно в нашем MD5-генераторе.

Что такое хеш-функция

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

  • Детерминированность: одинаковые входные данные всегда дают одинаковый хеш.
  • Лавинный эффект: изменение одного бита входа полностью меняет выход.
  • Однонаправленность: по хешу нельзя восстановить исходные данные.
  • Стойкость к коллизиям: сложно найти два разных входа с одинаковым хешем.

MD5 возвращает 128-битный хеш, который обычно записывается 32 шестнадцатеричными символами. Например, строка "hello" превращается в5d41402abc4b2a76b9719d911017c592.

Как работает MD5

Алгоритм обрабатывает входное сообщение блоками по 512 бит. Перед этим сообщение дополняется: к нему добавляется бит «1», затем нули, а в конце — 64-битное представление исходной длины. Далее выполняется 64 раунда, в которых применяются нелинейные функции, побитовые операции и циклические сдвиги.

На каждом раунде обновляются четыре 32-битных переменных (A, B, C, D), которые в конце объединяются в итоговый 128-битный хеш. Полное описание алгоритма выходит за рамки статьи, но для практики достаточно понимать: MD5 — это «чёрный ящик», который быстро превращает любые данные в 32-символьную строку.

Пример вычисления MD5

// На Node.js
const crypto = require('crypto');

const hash = crypto.createHash('md5').update('hello').digest('hex');
console.log(hash);
// => 5d41402abc4b2a76b9719d911017c592

const hash2 = crypto.createHash('md5').update('hello!').digest('hex');
console.log(hash2);
// => e7d8b3c5d6f8b6d3b3e3e3b8f3a3d3e3 (лавинный эффект)

Как посчитать MD5 в Windows, macOS и Linux

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

СистемаКомандаЧто учесть
Windows, командная строкаcertutil -hashfile file.iso MD5печатает хеш заглавными буквами
Windows, PowerShellGet-FileHash -Algorithm MD5 .\file.isoпо умолчанию считает SHA-256, алгоритм задают явно; в Windows 11 доступна из коробки
macOSmd5 file.isoответ в формате «MD5 (file.iso) = …»
Linuxmd5sum file.isoпечатает «хеш имя_файла» — удобно для пачки файлов

Разберу Windows по шагам, как самый частый случай. Нажмите Win+R, введитеcmd, Enter. В консоли наберитеcertutil -hashfile "C:\Users\you\Downloads\file.iso" MD5 — путь с пробелами берите в кавычки, а проще всего перетащить файл прямо в окно, путь вставится сам. Через пару секунд утилита напечатает хеш. В PowerShell то же самое делает Get-FileHash -Algorithm MD5 .\file.iso. Одна тонкость: если в системе включён криптографический режим FIPS, PowerShell MD5 считать откажется — тогда остаётся certutil.

На macOS откройте Терминал (Программы → Утилиты) и введите md5 file.iso — файл тоже можно перетащить в окно. На Linux команда та же с точностью до имени:md5sum file.iso. Для нескольких файлов удобнее записать суммы в файл и проверить их одной командой уже после копирования:

md5sum *.iso > sums.md5
# на другой машине:
md5sum -c sums.md5
# file.iso: OK — или FAILED, если файл изменился

При сравнении регистр букв не важен: certutil пишет заглавными, md5sum — строчными, это один и тот же хеш. И ещё маркер, который сэкономил мне не один вечер: сумма d41d8cd98f00b204e9800998ecf8427e — это хеш пустого файла. Увидели её — значит, команда отработала не по тому пути: файл не нашёлся, промахнулись папкой или загрузка пришла нулевой длины.

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

Где MD5 ещё применяется

Несмотря на уязвимости, MD5 не исчез полностью. Вот где он всё ещё встречается:

  • Контрольные суммы файлов. Многие торрент-трекеры и репозитории пакетов публикуют MD5-суммы для проверки целостности скачивания.
  • ETag в HTTP. Веб-серверы часто вычисляют ETag как MD5 от содержимого ресурса.
  • Гриндфест-хеши в Gravatar. Аватарки сервиса привязаны к MD5 от email пользователя.
  • Кэш-ключи. В качестве идентификатора блоба в кэше или CDN.
  • Неинтерактивные контрольные суммы. Когда защита от целенаправленной подделки не требуется.
СценарийПодходит ли MD5Альтернатива
Проверка случайного повреждения файлаДаCRC32, MD5
Проверка целостности при передачеС оговоркамиSHA-256
Хранение паролейНетbcrypt, argon2
Цифровая подписьНетSHA-256, SHA-512
SSL-сертификатыНетSHA-256

Коллизии и уязвимости

Коллизия — это ситуация, когда два разных сообщения дают одинаковый хеш. В 2004 году китайские исследователи под руководством Сяоюня Вана опубликовали метод построения коллизий MD5 за секунды. С тех пор алгоритм считается криптографически сломанным.

Основные векторы атак на MD5:

  • Коллизии: можно создать два разных файла с одинаковым MD5.
  • Выборочный префикс: исследователи Marc Stevens и др. показали, что можно создать два PKI-сертификата с одинаковым MD5.
  • Радужные таблицы: для коротких паролей MD5-хеш взламывается за секунды.
  • GPU-перебор: современная видеокарта вычисляет до 50 миллиардов MD5 в секунду.

Пример коллизии

// Два разных 128-байтовых блока дают одинаковый MD5
// (найдено исследователем Marc Stevens)

const a = Buffer.from('d131dd02c5e6eec4693d9a0698aff95c' +
                      '2fcab58712467eab4004583eb8fb7f89', 'hex');
const b = Buffer.from('d131dd02c5e6eec4693d9a0698aff95c' +
                      '2fcab50712467eab4004583eb8fb7f89', 'hex');

crypto.createHash('md5').update(a).digest('hex');
crypto.createHash('md5').update(b).digest('hex');
// Оба возвращают одинаковый хеш 79054025255fb1a26e4bc422aef54eb4

Почему MD5 сломан для безопасности

Взлом MD5 — не одномоментное событие, а история длиной в пятнадцать лет. Она стоит того, чтобы проследить её по датам: из неё понятно, откуда взялись нынешние запреты.

  • 1996. Ханс Доббертин находит псевдоколлизию в компрессионной функции MD5 и рекомендует задуматься о переходе на другие хеши. Первый звонок, оставшийся без последствий.
  • 2004. Команда Сяоюня Вана публикует практический метод построения коллизий — с этого момента два разных сообщения с одинаковым MD5 перестают быть теорией.
  • 2008. Стивенс, Сотиров, Аппельбаум и коллеги через выбранную префиксную коллизию создают поддельный корневой сертификат несуществующего удостоверяющего центра, которому браузеры доверяли бы автоматически. Публичная демонстрация на конференции CCC.
  • 2009–2011. Браузеры и удостоверяющие центры отказываются от MD5 в сертификатах, NIST запрещает MD5 для цифровых подписей.
  • 2012. Вирус Flame подделывает подпись Microsoft, использовав MD5-коллизию в сертификате лицензирования терминальных служб, — первый известный случай, когда коллизию применили в реальной атаке, а не в лаборатории.

Механика угрозы простая. Коллизию готовят заранее: злоумышленник конструирует два файла с одинаковым MD5 — безобидный документ и модифицированный. Вы подписываете первый, а подпись автоматически «действует» и на второй, потому что их хеши неразличимы. Для контрольной суммы загрузки это не страшно — там файл никто специально не подбирает. Для подписей и сертификатов это приговор, и именно поэтому их запретили.

При этом списывать MD5 со счетов целиком неверно. Там, где входные данные не контролирует противник, он по-прежнему рабочий инструмент. Я держу в голове короткое правило: MD5 защищает от случайностей, но не от зла.

ЗадачаMD5 подходит?Чем заменить
Сверить скачанный архив с суммой с официального сайтаДа, но если сайт отдаёт SHA-256 — берите егоSHA-256
Дедупликация файлов в своём хранилищеДа — данные не враждебныеSHA-256, если файлы загружают посторонние
Кэш-ключи, ETag, внутренние идентификаторыДа—
ПаролиНетargon2id, bcrypt
Подпись кода и документовНетSHA-256 и новее
TLS-сертификатыНет, выпуск запрещёнSHA-256

Одна оговорка к строке про сверку загрузок: она защищает от битой раздачи и подмены на зеркале, но не от взломанного сайта разработчика. Если атакующий контролирует и файл, и страницу с суммой, совпадение ничего не доказывает — поэтому серьёзные проекты публикуют суммы по HTTPS и подписывают релизы.

Почему MD5 нельзя использовать для паролей

Главная причина — скорость. MD5 спроектирован быстрым, поэтому атакующий с GPU может перебирать миллиарды комбинаций в секунду. Для проверки целостности файла скорость полезна, для хранения паролей — фатальна.

Даже добавление «соли» (случайной строки, добавляемой к паролю перед хешированием) не спасает ситуацию: она защищает от радужных таблиц, но не от прямого перебора. Для паролей нужны медленные функции — bcrypt, scrypt, argon2. Они намеренно тратят десятки миллисекунд на каждый хеш, делая массовый перебор экономически нецелесообразным.

Сравнение скорости

АлгоритмХешей/сек (RTX 4090)Годен для паролей
MD5~50 млрдНет
SHA-256~15 млрдНет
bcrypt (cost=12)~200Да
argon2id~50Да (рекомендуется)

Чем заменить MD5

Если ваша задача — контроль целостности, используйтеSHA-256 или SHA-512. Они не имеют известных практических коллизий и поддерживаются во всех современных языках программирования. Подробнее о сравнении алгоритмов читайте в нашей статье«Сравнение хеш-функций».

Если речь идёт о паролях — выбирайте bcrypt, scrypt или argon2. Эти алгоритмы специально замедлены и устойчивы к атакам на GPU/ASIC. Хотите убедиться, что ваш пароль действительно стойкий? Сгенерируйте его вгенераторе паролей.

Миграция с MD5

Если вы унаследовали проект с MD5-хешами паролей, план миграции простой:

  1. Добавьте новое поле в БД: password_hash_new.
  2. При следующем входе пользователя вычислите bcrypt от введённого пароля и сохраните в новом поле.
  3. Пометьте старый MD5 как устаревший.
  4. Через некоторое время удалите старые хеши.

Такой «ленивый» подход не требует принудительного сброса паролей всем пользователям и постепенно выводит MD5 из оборота.

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

Как посчитать MD5-сумму файла в Windows?

Откройте командную строку: Win+R, введите cmd, Enter. Затем выполнитеcertutil -hashfile "путь\к\файлу.iso" MD5. В PowerShell то же делаетGet-FileHash -Algorithm MD5 "путь\к\файлу.iso" — в Windows 11 утилита доступна сразу, без установки. На выходе 32 шестнадцатеричных символа; сверять их с исходной суммой лучше целиком, а не глазами по первым знакам.

Можно ли расшифровать MD5-хеш?

Нет. MD5 однонаправлен: из 32 символов исходные данные не восстанавливаются. Сервисы, обещающие «расшифровку MD5», на самом деле ищут вашу строку в заранее собранных таблицах известных пар «строка — хеш». Короткий пароль вродеqwerty123 они выдадут мгновенно, длинную случайную строку — нет. Правильный вывод не «расшифровка невозможна», а «хешировать пароли MD5 нельзя»: перебор на видеокартах добивает и то, чего в таблицах нет.

Чем MD5 отличается от SHA-256?

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

Заключение

MD5 — классика криптографии, но его время ушло. Для контрольных сумм случайных повреждений он ещё годится, но для всего, что касается безопасности — нет. Никогда не используйте MD5 для хранения паролей, цифровых подписей или сертификатов: это равносильно использованию замка из фольги. Современные альтернативы — SHA-256 для целостности и bcrypt/argon2 для паролей — надёжнее и не медленнее в реальных сценариях. А проверить, как выглядит хеш любого файла или строки в разных алгоритмах, можно в нашем MD5-генераторе.

Попробуйте эти инструменты

Похожие статьи