MD5 Hash Generator

Генерирует MD5-хеш из любого текста

Входной текст

Работает локально · Безопасно вставлять секреты

MD5-хеш

MD5-хеш появится здесь…

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

MD5 (Message-Digest Algorithm 5) — это криптографическая хеш-функция, которая вычисляет фиксированный 128-битный (16-байтный) дайджест из любых входных данных, независимо от их размера. Опубликованный в 1992 году Рональдом Ривестом в RFC 1321, алгоритм MD5 был разработан как более быстрая замена MD4 и быстро стал одной из наиболее широко используемых хеш-функций в интернете. Алгоритм обрабатывает входные данные блоками по 512 бит через четыре раунда по 16 операций каждый, используя различные нелинейные функции в каждом раунде, и возвращает 32-символьный шестнадцатеричный отпечаток.

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

С 2004 года исследователи продемонстрировали практические атаки коллизиями против MD5, поэтому алгоритм более не считается безопасным для цифровых подписей, сертификатов или любых приложений, требующих устойчивости к коллизиям. Тем не менее MD5 по-прежнему широко применяется в незащищённых целях: проверка целостности файлов после загрузки, формирование ключей кэша, дедупликация контента и создание детерминированных идентификаторов из строк. Для таких задач скорость алгоритма и повсеместная поддержка в библиотеках делают его практичным выбором. В 2008 году Марк Стивенс и его коллеги опубликовали атаку на основе коллизии с выбранным префиксом, позволяющую создать два документа с произвольно выбранными префиксами, имеющими одинаковый дайджест. Эта техника была продемонстрирована на Chaos Communication Congress 2008 путём создания поддельного сертификата Удостоверяющего центра. Впоследствии вредоносная программа Flame 2012 года использовала коллизии с выбранным префиксом для подделки сертификата подписи кода Microsoft, позволив вредоносному ПО выдавать себя за легитимное обновление Windows. Эти реальные эксплойты подтвердили, что алгоритм криптографически сломан для любого доверенного применения, и на него не следует полагаться там, где злоумышленник может влиять на хешируемые входные данные.

Зачем использовать этот генератор MD5?

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

Мгновенное хеширование
Результат обновляется по мере ввода. Никаких нажатий кнопок, никакого ожидания — MD5-дайджест отображается символ за символом по мере изменения входных данных.
🔒
Обработка с приоритетом конфиденциальности
Всё хеширование выполняется локально в браузере с использованием JavaScript. Введённый текст никогда не покидает ваше устройство и никогда не отправляется на какой-либо сервер.
📋
Копирование одним кликом
Скопируйте хеш в буфер обмена одним щелчком мыши. Переключайтесь между выводом в нижнем и верхнем регистре — в зависимости от того, какой формат требует ваша система.
🔍
Регистрация не требуется
Никакой регистрации, никакого входа в аккаунт, никаких ограничений использования. Откройте страницу и сразу начните хешировать. Работает на любом устройстве с современным браузером.

Случаи использования MD5

Разработка фронтенда
Генерируйте хеши для инвалидации кэша статических ресурсов. Добавляйте MD5-дайджест содержимого файла к URL-адресам CSS и JavaScript, чтобы браузеры загружали обновлённую версию при изменении содержимого.
Бэкенд-разработка
Создавайте детерминированные ключи кэша из сложных параметров запроса или тела запроса. MD5-хеши дают компактные ключи фиксированной длины, хорошо работающие с Redis, Memcached и кэш-слоями CDN.
DevOps и CI/CD
Проверяйте целостность файлов после передачи, сравнивая MD5-контрольные суммы. Многие реестры пакетов и репозитории артефактов публикуют MD5-дайджесты вместе с загрузками для быстрой верификации.
QA и тестирование
Сравнивайте MD5-хеши ответов API, дампов баз данных или конфигурационных файлов для обнаружения неожиданных изменений между прогонами тестов без сравнения полного содержимого.
Инженерия данных
Дедуплицируйте записи в ETL-конвейерах, вычисляя MD5-хеши содержимого строк. Две строки с одинаковым хешем являются кандидатами для дедупликации, что снижает затраты на хранение и обработку.
Обучение и образование
Экспериментируйте с хеш-функциями, чтобы понять односторонние преобразования, лавинный эффект и значение устойчивости к коллизиям для безопасности. MD5 — это простейший широко известный хеш-алгоритм для изучения.

MD5 vs другие алгоритмы хеширования

MD5 — самый быстрый и дающий самый короткий результат среди распространённых хеш-алгоритмов, но он предоставляет наименее надёжные гарантии безопасности. Таблица ниже сравнивает размеры дайджестов, стандарты и подходящие варианты использования для каждого алгоритма.

АлгоритмРазмер дайджестаДлина в hexСтандартЛучше всего подходит для
MD5128 bits32 hex chars1992 / RFC 1321Checksums, non-security fingerprints
SHA-1160 bits40 hex chars1995 / RFC 3174Legacy git commits (being replaced)
SHA-256256 bits64 hex chars2001 / FIPS 180-4TLS certificates, blockchain, JWTs
SHA-384384 bits96 hex chars2001 / FIPS 180-4Government systems, higher security margin
SHA-512512 bits128 hex chars2001 / FIPS 180-4Digital signatures, HMAC with large keys
SHA-3256 bits64 hex chars2015 / FIPS 202Post-quantum readiness, backup standard
BLAKE3256 bits64 hex chars2020High-performance checksums, Merkle trees

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

MD5 обрабатывает входные данные через конструкцию Меркла–Дамгарда: сообщение дополняется до кратного 512 битам, разбивается на блоки, и каждый блок проходит через четыре раунда по 16 побитовых операций, смешивающих входные данные с предварительно вычисленными константами, производными от синуса. Результатом является 128-битное состояние, становящееся итоговым дайджестом.

Каждый раунд применяет отдельную нелинейную вспомогательную функцию к трём из четырёх 32-битных переменных состояния (A, B, C, D). Раунд 1 использует F(B,C,D) = (B AND C) OR (NOT B AND D) — побитовый условный селектор. Раунд 2 использует G(B,C,D) = (B AND D) OR (C AND NOT D) — комплементарный селектор. Раунд 3 использует H(B,C,D) = B XOR C XOR D — функцию чётности. Раунд 4 использует I(B,C,D) = C XOR (B OR NOT D) — асимметричный комбинатор. Эти четыре функции обеспечивают влияние каждого бита входных данных на итоговый дайджест, создавая лавинный эффект, при котором незначительные изменения входных данных вызывают масштабные непредсказуемые изменения результирующего хеша.

Input: "hello world"
MD5: 5eb63bbbe01eeed093cb22bb8f5acdc3
(128 bits = 16 bytes = 32 hex characters)

Алгоритм выполняется в пять этапов: (1) добавление бита 1, затем нулей до тех пор, пока длина сообщения не станет 448 mod 512; (2) добавление исходной длины сообщения в виде 64-битного целого числа в порядке little-endian; (3) инициализация четырёх 32-битных переменных состояния (A, B, C, D) фиксированными константами; (4) обработка каждого 512-битного блока через 64 операции с использованием четырёх нелинейных функций (F, G, H, I), по одной на каждый раунд из 16 операций; (5) добавление результирующего состояния к накопленному итогу и вывод окончательного 128-битного хеша в порядке байтов little-endian.

Примеры кода

Как генерировать MD5-хеши в популярных языках программирования и средах. Обратите внимание: MD5 недоступен в браузерном Web Crypto API — используйте библиотеку или Node.js.

JavaScript (Web Crypto — browser & Node.js)
// MD5 is not available in Web Crypto API (it only supports SHA-*)
// Use a library like 'js-md5' or the Node.js crypto module

// Node.js (built-in crypto)
const crypto = require('crypto')
const hash = crypto.createHash('md5').update('hello world').digest('hex')
console.log(hash) // → "5eb63bbbe01eeed093cb22bb8f5acdc3"

// With Unicode input
crypto.createHash('md5').update('cafe\u0301').digest('hex')
// → "4fad076bae205e95bec9dacea498e2ab"
Python
import hashlib

# Basic MD5 hash
result = hashlib.md5(b'hello world').hexdigest()
print(result)  # → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a string (must encode to bytes first)
text = 'hello world'
hashlib.md5(text.encode('utf-8')).hexdigest()
# → "5eb63bbbe01eeed093cb22bb8f5acdc3"

# Hash a file
with open('file.bin', 'rb') as f:
    md5 = hashlib.md5()
    for chunk in iter(lambda: f.read(8192), b''):
        md5.update(chunk)
    print(md5.hexdigest())
Go
package main

import (
    "crypto/md5"
    "fmt"
)

func main() {
    data := []byte("hello world")
    hash := md5.Sum(data)
    fmt.Printf("%x\n", hash)
    // → 5eb63bbbe01eeed093cb22bb8f5acdc3
}
CLI (Linux / macOS)
# Using md5sum (Linux) or md5 (macOS)
echo -n "hello world" | md5sum
# → 5eb63bbbe01eeed093cb22bb8f5acdc3  -

# macOS
echo -n "hello world" | md5
# → 5eb63bbbe01eeed093cb22bb8f5acdc3

# Hash a file
md5sum package.json
# → a1b2c3d4e5f6...  package.json

# Using openssl (cross-platform)
echo -n "hello world" | openssl md5
# → MD5(stdin)= 5eb63bbbe01eeed093cb22bb8f5acdc3

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

Безопасно ли использовать MD5?
Он не безопасен для чувствительных к безопасности приложений, таких как цифровые подписи, TLS-сертификаты или хеширование паролей. Практические атаки коллизиями были продемонстрированы ещё в 2004 году, а атаки с коллизией с выбранным префиксом теперь осуществимы за секунды на обычном оборудовании. Для незащищённых применений — контрольные суммы, ключи кэша, дедупликация контента — алгоритм остаётся практичным и широко поддерживаемым вариантом.
В чём разница между MD5 и SHA-256?
Алгоритм MD5 даёт 128-битный (32 шестнадцатеричных символа) дайджест и уязвим к атакам коллизиями. SHA-256 даёт 256-битный (64 шестнадцатеричных символа) дайджест и не имеет известных практических атак. SHA-256 примерно на 30–40% медленнее более старого алгоритма на том же оборудовании, однако дополнительный запас безопасности делает его выбором по умолчанию для любого приложения, где проверка целостности должна противостоять преднамеренному вмешательству.
Можно ли обратить MD5-хеш и получить исходные данные?
Нет. Эта хеш-функция является односторонней по своей сути — она отбрасывает информацию в процессе хеширования. Однако для коротких или распространённых входных данных злоумышленники могут использовать радужные таблицы (заранее вычисленные отображения хеш → открытый текст) или перебор для нахождения исходных данных. Именно поэтому MD5 никогда не следует использовать для хранения паролей. Вместо него используйте bcrypt, scrypt или Argon2.
Почему разные инструменты иногда дают разные MD5-хеши для одного и того же текста?
Наиболее частая причина — различия в кодировке. Алгоритм работает с байтами, а не с символами. Строка 'hello' даёт разные хеши при кодировании как UTF-8, UTF-16 или Latin-1. Другая распространённая проблема — завершающие символы новой строки: команда echo в большинстве оболочек добавляет символ новой строки (\n), если не использовать echo -n. Всегда проверяйте точные байты, которые хешируются.
Сколько времени занимает вычисление MD5-хеша?
Алгоритм чрезвычайно быстр. На современном оборудовании он обрабатывает данные со скоростью 3–6 ГБ/с на одном ядре процессора. GPU может вычислять миллиарды контрольных сумм в секунду. Эта скорость является преимуществом при проверке файлов, но недостатком при хешировании паролей, где предпочтительны более медленные алгоритмы (bcrypt, Argon2), поскольку они противостоят атакам перебором.
Что такое коллизия MD5 и почему это важно?
Коллизия возникает, когда два разных входа дают одинаковый хеш-дайджест. В 2004 году Сяоюнь Ван продемонстрировала первую практическую коллизию против MD5. К 2012 году вредоносная программа Flame использовала коллизию для подделки сертификата подписи кода Microsoft. Сегодня коллизии с идентичным префиксом можно вычислить менее чем за минуту. Это делает алгоритм непригодным для любого приложения, полагающегося на устойчивость к коллизиям, например для цифровых подписей или прикрепления сертификатов.
Что лучше использовать для контрольных сумм файлов: MD5 или CRC32?
Эта контрольная сумма предпочтительнее CRC32 для проверки целостности файлов. CRC32 — это 32-битный код обнаружения ошибок, разработанный для обнаружения случайных повреждений при передаче, но не преднамеренного вмешательства. Его небольшое выходное пространство означает, что коллизии тривиально легко построить. MD5 даёт 128-битный дайджест со значительно более высокой устойчивостью к случайным коллизиям. Для сценариев с угрозой нарушителя (проверка загрузок из ненадёжных источников) используйте SHA-256.