Хэш MD5 онлайн
128-битный хэш 1992 года — до сих пор повсеместен для проверки целостности файлов, хотя коллизии давно найдены. Считается прямо в браузере — текст никуда не отправляется.
Вычислить MD5
Результат пересчитывается сам, пока вы печатаете. В режиме «По строкам» пустые строки тоже хэшируются — результат всегда совпадает по числу строк со входом. Нужна другая функция — на полной странице калькулятора их 32.
История MD5
MD5 (Message Digest 5) придумал американский криптограф Рональд Ривест в 1991 году как замену своему же MD4, у которого к тому моменту уже находили слабые места. Алгоритм описан в открытом стандарте RFC 1321 (1992) и почти сразу стал одним из самых распространённых хэшей в мире — простой, быстрый, со свободной от патентов спецификацией, он попал в контрольные суммы файлов, ранние системы хранения паролей, цифровые подписи и десятки сетевых протоколов девяностых и двухтысячных.
Популярность оказалась даже избыточной: MD5 использовали там, где требовалась настоящая криптографическая стойкость, хотя уже к середине 2000-х стало ясно, что для таких задач алгоритм не годится.
Как устроен алгоритм
MD5 — классический пример конструкции Меркла — Дамгора: входное сообщение дополняется (padding) до длины, кратной 512 битам, затем разбивается на блоки, и каждый блок по очереди «перемешивает» внутреннее состояние — так называемая функция сжатия. Результат обработки одного блока становится входным состоянием для следующего, поэтому итоговый хэш зависит от каждого байта сообщения и от их порядка.
Внутреннее состояние — четыре 32-битных регистра A, B, C, D (начальные значения заданы стандартом). Каждый 512-битный блок проходит 4 раунда по 16 операций — то есть 64 операции на блок. В каждой операции регистры перемешиваются через одну из четырёх нелинейных функций (F, G, H, I — на каждый раунд своя), 32-битное слово сообщения, константу из таблицы (получена как ⌊2³² × |sin(i)|⌋ — да, из тригонометрического синуса) и циклический сдвиг битов. После всех 64 операций текущие A, B, C, D складываются с их значениями до блока, а после последнего блока просто склеиваются в 128-битную строку — это и есть хэш.
Характеристики
| Параметр | Значение |
|---|---|
| Длина хэша | 128 бит (32 hex-символа) |
| Размер блока | 512 бит |
| Раундов на блок | 64 (4 × 16) |
| Внутреннее состояние | 4 × 32-битных регистра (A, B, C, D) |
| Конструкция | Меркла — Дамгора |
| Опубликован | 1992, RFC 1321 |
| Автор | Рональд Ривест |
Где применяется
- Контрольная сумма файлов и дистрибутивов (проверка на случайное повреждение, не на подделку)
- Ключи кэша, дедупликация данных, быстрое сравнение больших файлов
- Исторически — хранение паролей и цифровые подписи; сегодня для этого не годится
Криптостойкость
MD5 криптографически сломан. В 2004 году группа китайских исследователей (Ван Сяоюнь и соавторы) показала практический способ находить коллизии — две разные строки с одинаковым хэшем. С тех пор атаки только совершенствовались: сегодня коллизию с выбранным префиксом можно построить за секунды на обычном ноутбуке. Использовать MD5 для подписей, паролей или там, где важна защита от намеренной подделки, нельзя.
Как «просто отпечаток» для не-security задач — сверка файлов, кэш-ключи — MD5 по-прежнему используется повсеместно: там коллизии не создают угрозы, потому что противник не пытается их подделать.