ToolActToolAct

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

Онлайн шифрование MD5, поддерживает 16-битный и 32-битный вывод, преобразование регистра

Ввод
Символов: 0
Результат
Символов: 0

Настройки формата

Что такое шифрование MD5?

MD5 (Алгоритм дайджеста сообщения 5) — это широко используемая криптографическая хеш-функция, разработанная американским криптографом Рональдом Ривестом в 1991 году. MD5 может отображать данные любой длины в фиксированное 128-битное (16-байтовое) хеш-значение, обычно представленное 32 шестнадцатеричными цифрами. MD5 широко использовался для проверки целостности данных, хранения паролей и цифровых подписей. Однако в 2004 году китайский криптограф Ван Сяоюнь и её команда обнаружили уязвимости столкновений в MD5, позволяющие злоумышленникам создавать два разных набора данных с одинаковым значением MD5. Поэтому MD5 больше не подходит для сценариев, чувствительных к безопасности. Форматы вывода MD5 бывают двух типов: стандартный 32-битный (полное хеш-значение) и усеченный 16-битный (берутся средние 16 символов из 32-битного значения). Этот инструмент поддерживает оба формата вывода с опциями отображения в верхнем или нижнем регистре.

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

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

  1. Введите текст для шифрования в поле ввода
  2. Выберите формат вывода: верхний регистр 32 бита, нижний регистр 32 бита, верхний регистр 16 бит или нижний регистр 16 бит
  3. Значение MD5 будет рассчитано и отображено автоматически
  4. Нажмите кнопку «Копировать», чтобы скопировать результат

Описание формата вывода

  • Используйте 32-символьный вывод, когда нужен полный дайджест MD5 для контрольных сумм, ключей кэша или устаревших полей API.
  • Используйте 16-символьный вывод только тогда, когда устаревшая система явно ожидает средние 16 символов полного дайджеста.

Описание регистра

  • Значения MD5 в верхнем и нижнем регистре содержат одни и те же шестнадцатеричные байты; различие заключается только в формате отображения.
  • При сравнении значений MD5 учитывайте точный регистр, требуемый целевой системой, чтобы избежать ложных несовпадений.

Применение

Хеширование текстовых фрагментов в распространённых форматах MD5Вставьте строку и мгновенно получите MD5-дайджест в виде 32 символов или средних 16 символов, с выводом в верхнем или нижнем регистре. Это соответствует форматам, которые до сих пор встречаются во многих устаревших API, ключах кэша и полях баз данных. Текст хешируется в браузере стандартным 128-битным сжатием MD5, поэтому исходная строка не покидает вкладку — полезно при воспроизведении внутренней контрольной суммы legacy-системы.
Сравнение устаревших подписей при отладкеКогда старая система ожидает определённое представление MD5, переключение между lower32, upper32, lower16 и upper16 помогает определить, связана ли нестыковка с самим дайджестом или только с форматом вывода. Количество символов на входе и выходе упрощает обнаружение случайных пробелов, финальных переносов строк или BOM-байтов — одна и та же UTF-8 строка с CRLF и без него хешируется в разные дайджесты.
Локальная обработка конфиденциального текстаРеализация MD5 работает в браузере над UTF-8 текстом, поэтому внутренние идентификаторы, тестовые строки или временные секреты не нужно вставлять во внешний сайт хеширования. MD5 включён для проверки совместимости, а не для современного хранения паролей или надёжной безопасности — SHA-256 является подходящим выбором везде, где важна устойчивость к коллизиям.
Генерация ключей кэша из имён файлов или идентификаторовВставьте имя файла, URL-slug или составной ключ во входное поле и получите стабильный 32-символьный дайджест в качестве ключа кэша для Redis, Memcached или списков очистки CDN. Формат средних 16 символов также подходит для коротких legacy-пространств ключей, когда важна экономия места, ценой пространства коллизий ~2^16 — допустимо для ключей кэша, но не для идентификации.
Подтверждение совпадения контрольных сумм между двумя системамиХешируйте те же данные локально и сравните с MD5 из legacy-экспорта, FTP-зеркала или манифеста прошивки. Идентичный 32-символьный вывод подтверждает побайтовое совпадение; любое расхождение указывает на различия в кодировке, переносах строк (CRLF против LF), BOM или текстовой кодировке, которые стоит выяснить до сообщения об ошибке передачи.

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

MD5 (Message-Digest Algorithm 5) был разработан Рональдом Ривестом в MIT в 1991 году и опубликован как RFC 1321, заменив взломанный MD4. На протяжении 1990-х и 2000-х годов он был основной хеш-функцией: проверка целостности файлов, хранение паролей (небезопасное, без соли), цифровые подписи, отпечатки вредоносного ПО и дайджест по умолчанию в самых разных инструментах — от `md5sum` и MySQL `MD5()` до старого хранилища объектов Git и `openssl dgst -md5`. Выход — 128 бит (16 байтов), почти всегда отображаемые как 32 шестнадцатеричных символа в нижнем регистре. Архитектура следует схеме Merkle–Damgård: сообщение дополняется до кратности 512 битам, затем добавляется 64-битная длина в little-endian, после чего по каждому 512-битному блоку итерируется функция сжатия. 128-битное состояние отражено в четырёх 32-битных регистрах A, B, C, D, инициализированных фиксированными константами (0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476 — выбраны как «nothing-up-my-sleeve» значения: это квадратные корни из 2, 3, 5, 10 в little-endian). Каждый 512-битный блок разбивается на шестнадцать 32-битных слов M[0..15] и проходит 4 раунда по 16 шагов (всего 64 шага). Раундовые функции: F = (X AND Y) OR (NOT X AND Z), G = (X AND Z) OR (Y AND NOT Z), H = X XOR Y XOR Z, I = Y XOR (X OR NOT Z); каждый шаг комбинирует одну раундовую функцию, слово сообщения, раундовую константу T[i] = floor(2^32 · |sin(i+1)|) и циклический сдвиг влево на величину, специфичную для шага, затем прибавляет результат обратно к состоянию. Замысел четырёх раундов: раунд 1 быстрый и нелинейный, раунд 2 параллелизуемый, раунд 3 агрессивнее смешивает, раунд 4 завершает сильной диффузией. Итоговое состояние — это MD5 всего сообщения; именно это делает MD5 однонаправленной функцией в предквантовом смысле. Крах: устойчивость к коллизиям нарушена, и для криптографического применения это единственное, что имеет значение. Ван Сяоюнь и соавторы опубликовали полную коллизионную атаку в 2004 году (атаки CFRG сократили поиск коллизий до нескольких часов на ПК). В 2008 году исследователи использовали коллизии MD5 для подделки действительного сертификата CA (атака «chosen-prefix collision» Стивенса и соавторов), а в 2012 году вредоносная программа Flame злоупотребила ещё не раскрытой коллизией MD5 для подделки сертификата подписи кода Microsoft. Статья 2004 года сократила пространство поиска коллизий с 2^64 до примерно 2^24, так что любой атакующий с несколькими часами вычислений может получить два сообщения с одинаковым MD5. После Flame Microsoft явно запретил MD5 в Authenticode; браузеры отозвали TLS-сертификаты, подписанные MD5, в 2014–2017 годах; а IETF давно признал MD5 устаревшим в TLS, SSH и IPsec. Показатели производительности на современном ноутбуке x86-64: MD5 хеширует на скорости 400–700 МБ/с на ядро (ограничено пропускной способностью памяти на больших входах), SHA-256 — 200–300 МБ/с, SHA-512 быстрее на 64-битных CPU благодаря операциям с 64-битными словами. Для хеширования паролей MD5 непригоден вне зависимости от пропускной способности — bcrypt/scrypt/Argon2id намеренно настраиваемые, чтобы противостоять GPU-ускорению. На одном RTX 4090 Hashcat показывает MD5 примерно 60 GH/s (гигахешей в секунду) — в 7–8 раз быстрее SHA-256 на том же GPU. Именно этот разрыв делает MD5 опасным: GPU перебирает предварительно вычисленные таблицы за часы, а не годы. Web Crypto `crypto.subtle.digest('MD5', bytes)` работает на скорости диска в Chrome, Edge и Firefox 102+; в старых браузерах используется чистый JS (SparkMD5 или собственная реализация страницы) со скоростью 50–150 МБ/с. Тестовые векторы из RFC 1321: пустая строка хешируется в d41d8cd98f00b204e9800998ecf8427e, 'a' — в 0cc175b9c0f1b6a831c399e269772661, 'abc' — в 900150983cd24fb0d6963f7d28e17f72. Если ваш результат не совпадает с этими значениями, причина почти всегда в проблеме кодировки (передача JS-строки в реализацию MD5 вместо UTF-8 байтов), а не в самом алгоритме.

  • Конструкция Merkle–Damgård делает MD5 уязвимой к атаке удлинения: зная H(secret || msg), атакующий может вычислить H(secret || msg || padding || extra), не зная secret. Поэтому MD5(secret || message) не является безопасным MAC — используйте HMAC-MD5 (RFC 2104) или HMAC-SHA256, которые применяют другую структуру (двухключевой вложенный хеш), устойчивую к этой атаке.
  • Тестовые векторы (RFC 1321): пустая строка хешируется в d41d8cd98f00b204e9800998ecf8427e, 'a' — в 0cc175b9c0f1b6a831c399e269772661, 'abc' — в 900150983cd24fb0d6963f7d28e17f72. Если ваша реализация не выдаёт этих значений, причина почти всегда в проблеме кодировки (передача JavaScript-строки в JS-реализацию MD5 вместо UTF-8 байтов через TextEncoder), а не в самом алгоритме.
  • Скорость хеширования: одно ядро современного x86-64 CPU обрабатывает MD5 примерно 400–700 МБ/с, ограничено пропускной способностью памяти на больших входах. SHA-256 примерно на 30% медленнее — 200–300 МБ/с, а SHA-512 быстрее на 64-битных CPU, поскольку оперирует 64-битными словами. Для хеширования паролей правильный выбор — bcrypt (cost factor 12) / scrypt / Argon2id, которые намеренно медленны и настраиваемы для противодействия GPU-ускорению.
  • Четыре раундовые функции F, G, H, I были намеренно названы так, чтобы читаться как предложение («FiGiHI» / «figi hi») — подпись Ривеста. Каждая использует только побитовые операции и различную структуру смешивания, чтобы алгоритм не вырождался в линейную или аффинную систему при криптоанализе. Концепция S-боксов из DES / AES в MD5 отсутствует; безопасность обеспечивается расширением слов сообщения и константами сдвига, а не таблицами подстановок.
  • Бенчмарк Hashcat на одном RTX 4090: примерно 60 GH/s для MD5 (по чистому хешу) и 30 GH/s для MD5 с солью. SHA-256 на том же GPU — 8 GH/s. 7–8-кратный разрыв — вот почему атакующие любят MD5: GPU перебирает предварительно вычисленные таблицы за часы, а не годы. Используйте SHA-256, bcrypt или Argon2id для всего, что должно выдерживать офлайн-атаку.
  • «Двойной MD5» (MD5(MD5(x))) встречается в старом коде на PHP и MySQL, часто с солью. Он не помогает против коллизионных атак (коллизия MD5 есть коллизия MD5(MD5()) с O(1) дополнительной работы) и лишь незначительно замедляет поиск прообраза (в 2 раза). Современное хеширование паролей (Argon2id из RFC 9106, scrypt из RFC 7914, bcrypt с cost ≥ 12) — единственно верный ответ для хранения паролей; если вы видите MD5 в современном столбце паролей, это ошибка.
  • Миграция с MD5: если вы поддерживаете систему, использующую MD5, правильная стратегия — двойная запись (вычислять и MD5, и SHA-256 при чтении, предпочитать SHA-256 в новых кодовых путях) на период отказа, а затем убрать MD5, как только от него ничего не зависит. Для протоколов, жёстко требующих MD5 (NTLM, RADIUS challenge-response, некоторые режимы Kerberos), MD5 не исчезнет в ближайшее время — Microsoft обновил NTLM для использования AES в 2010 году, но старая версия по умолчанию включена ради совместимости, и вам следует полностью отключить NTLMv1, если в сети есть устаревшие Windows-системы.
  • Реализация на странице: когда Web Crypto доступен (Chrome, Edge, Firefox 102+), используется `crypto.subtle.digest('MD5', utf8Bytes)`, работающий на нативном коде на скорости диска. Когда недоступен, используется чистая JS-реализация (SparkMD5 0.7 или собственная реализация страницы) со скоростью 50–150 МБ/с. Обе дают идентичный результат, поэтому тестовые векторы проходят для обоих бэкендов. Этап кодирования — `new TextEncoder().encode(str)`, который всегда выдаёт UTF-8 байты; не передавайте JavaScript-строку напрямую в чистую JS-реализацию MD5, иначе на любом не-ASCII входе вы получите неверный хеш.

Примеры

Пустая строка и короткий текст

Пустая строка -> d41d8cd98f00b204e9800998ecf8427e
hello         -> 5d41402abc4b2a76b9719d911017c592

RFC: RFC 1321, раздел A.1 определяет эти тестовые векторы

Чувствительность к регистру

hello world -> 5eb63bbbe01eeed093cb22bb8f5acdc3
Hello       -> 8b1a9953c4611296a827abf8c47804d7
HELLO       -> eb61eead90e3b899c6bcbe27ac581660

Замечание: изменение одного символа полностью меняет хеш (лавинный эффект)

Числа и пунктуация

123456        -> e10adc3949ba59abbe56e057f20f883e
Hello, World! -> 65a8e27d8879283831b664bd8b7f0ad4
file.txt      -> 3d8e577bddb17db339eae0b3d9bcf180

Замечание: любое изменение пунктуации или пробелов даёт совершенно другой дайджест

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

Атака с коллизиями: в 2004 году исследователи нашли способы создавать два разных
сообщения с одинаковым хешем MD5. Это ломает цифровые подписи и
проверку сертификатов.

Для безопасности используйте SHA-256 или SHA-3:
  MD5:     128 бит, стойкость к коллизиям нарушена (атака осуществима)
  SHA-256: 256 бит, практических коллизий не найдено
  SHA-512: 512 бит, ещё больший запас прочности

NIST: NIST исключил MD5 из криптографического использования с 2005 года
Применение: MD5 по-прежнему пригоден для проверки целостности файлов, дедупликации и ключей кеша

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

Что такое MD5?

MD5 (Message Digest 5, RFC 1321) — это 128-битная хеш-функция, опубликованная Роном Ривестом в 1991 году. Она всегда возвращает 32 шестнадцатеричных символа независимо от длины ввода, и при изменении даже одного бита входа выход меняется полностью. Она быстрая — сотни МБ/с на современном CPU.

Безопасен ли MD5?

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

Где MD5 ещё уместен?

Для обнаружения случайных повреждений: контрольные суммы загрузок, простая дедупликация доверенных файлов, быстрые отпечатки в стиле ETag. Многие вендоры по-прежнему публикуют MD5 для обратной совместимости, часто рядом с SHA-256.

Расчёт выполняется локально?

Да. MD5 вставленного текста вычисляется в вашем браузере. Ничего не загружается и не логируется. Можете проверить это во вкладке Network во время хеширования.

Почему одна и та же строка даёт другой MD5 в другом инструменте?

Почти всегда из-за скрытой разницы в символах: BOM UTF-8, замыкающий перевод строки, CRLF вместо LF, либо один инструмент кодирует в UTF-8, а другой — в UTF-16. Сам алгоритм MD5 полностью детерминирован во всех реализациях.

MD5 в верхнем и нижнем регистрах — это одно и то же?

Да. 128 бит на выходе одинаковы; регистр — это просто соглашение об отображении. Сравнивать значения нужно без учёта регистра.

Чем MD5 отличается от MD5(salt + password)?

Простой MD5 пароля тривиально ломается радужными таблицами. Добавление соли блокирует предвычисленные таблицы, но MD5 всё равно слишком быстр для хеширования паролей. Для паролей используйте bcrypt/scrypt/Argon2; MD5 (с солью или без) для этой задачи не подходит.

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

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

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

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

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

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

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

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

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

Инструмент изменения MD5 файла

Онлайн-инструмент для изменения MD5 файла путём добавления случайных данных. Пакетная обработка до 5 файлов, локальная обработка защищает конфиденциальность.

Кодировщик/Декодировщик Base64

Онлайн-инструмент для кодирования и декодирования Base64 с поддержкой UTF-8 текста, кириллицы и изображений. Мгновенное кодирование без установки программ.