фиксированная длина: любой ввод — 128 бит (32 hex-символа)
Ввод
MD5
«»пустая строка / empty
d41d8cd98f00b204e9800998ecf8427e
a
0cc175b9c0f1b6a831c399e269772661
abc
900150983cd24fb0d6963f7d28e17f72
message digest
f96b697d7cb7938d525a2f31aaf161d0
The quick brown fox jumps over the lazy dog
9e107d9d372bb6826bd81d3542a419d6
Привет, мир!
c446a2994f35689482651b7c7ba8b56c
03
О MD5 — что стоит знать
MD5 (Message Digest 5) — алгоритм хеширования 1991 года, который превращает любые данные в 128-битный отпечаток. Длина результата фиксирована — 32 hex-символа или 22 символа Base64. Обратить хеш в исходный текст невозможно.
MD5 сломан для криптографии: с 2004 года известны практические коллизии. Для паролей — bcrypt, scrypt или Argon2. Для проверки целостности файлов (checksum) MD5 всё ещё годится: там нет злоумышленника, а случайные ошибки он ловит надёжно.
MD5 сломан для криптографии
с 2004
collision: hash(A) === hash(B), где A ≠ B
В 2004 году показаны практические коллизии MD5. С 2008 — атаки на PKI-сертификаты. Не использовать для подписей, TLS, паролей, аутентификации.
Но подходит для checksum
OK
проверка целостности файла при скачивании
Для случайных ошибок (сбой сети, битый диск) MD5 надёжен: злоумышленник не участвует. Используется в rsync, git до 2005, дистрибутивах Linux вместе с более сильным SHA-256.
Для паролей — только bcrypt/Argon2
критично
MD5(password) === MD5(password) → rainbow table
MD5 быстрый: миллиарды хешей в секунду на GPU. Rainbow tables + brute-force ломают пароли за минуты. Для хранения паролей — bcrypt, scrypt или Argon2 (медленные, с солью).
Для новых проектов — SHA-256 (стандарт де-факто) или BLAKE2 (быстрее). Оба выдают более длинный хеш (64 символа hex вместо 32) и не имеют известных атак.
04
Частые вопросы
Введите текст — хеш появится сразу, 32 шестнадцатеричных знака. Тот же результат можно получить заглавными буквами или в Base64, где он занимает 22 символа. Результат детерминирован: одна и та же строка всегда даёт один и тот же хеш, а правка единственного символа меняет его целиком.
Нет. Хеш вычисляется библиотекой в вашем браузере, введённый текст не покидает устройство. Проверить это просто: откройте страницу, отключите интернет и продолжайте считать хеши. Для инструмента, в который вставляют пароли и ключи, это не деталь, а главное свойство. На сервер уходит только название открытого инструмента, для счётчика популярности.
Потому что коллизии — разные данные с одинаковым хешем — научились находить за приемлемое время ещё в 2004 году, и с тех пор атаки только подешевели. Это делает MD5 непригодным для подписей, сертификатов и хранения паролей, но не мешает использовать его как контрольную сумму от случайных повреждений.
Нет. Хеш-функция необратима: исходные данные из хеша не восстанавливаются, потому что при вычислении они не сохраняются. Сервисы, обещающие расшифровку, ищут совпадение в базе заранее посчитанных значений — поэтому короткий или популярный пароль «расшифровывается» мгновенно, а произвольная длинная строка не поддаётся вовсе.
Длиной и стойкостью. MD5 даёт 128 бит, SHA-256 — 256, и практических атак на коллизии для второго не найдено. MD5 быстрее, и для проверки целостности файла это плюс, а для паролей минус: скорость удешевляет перебор. Для любой задачи, где есть противник, берут SHA-256.
Функциями, специально сделанными медленными: bcrypt, scrypt или Argon2. Они намеренно требуют времени и памяти, из-за чего массовый перебор становится дорогим, и включают соль — случайную добавку, благодаря которой одинаковые пароли дают разные хеши. Ни MD5, ни SHA-256 для хранения паролей не предназначены.