Хеш MD5
Бесплатный онлайн-инструмент хеширования MD5. Режимы текст/файл/пакетная обработка/HMAC-MD5, UTF-8/Latin1, верхний регистр, группировка по 8 символов. ⚠️ MD5 скомпрометирован — НЕ используйте для хранения паролей.
Бесплатный онлайн-инструмент хеширования MD5. Режимы текст/файл/пакетная обработка/HMAC-MD5, UTF-8/Latin1, верхний регистр, группировка по 8 символов. ⚠️ MD5 скомпрометирован — НЕ используйте для хранения паролей.
MD5 обычно используется для проверки целостности файлов (например, проверки загрузок), быстрой генерации дайджестов, совместимости с устаревшими системами, ключей кэша и дедупликации данных в небезопасных сценариях. MD5 выдаёт 128 бит (32 шестнадцатеричных символа) и очень быстр, подходит для сценариев проверки с низкими требованиями к безопасности.
MD5 выдаёт 128 бит (32 hex), очень быстр, но скомпрометирован; SHA-256 выдаёт 256 бит (64 hex), медленнее, но не имеет практических атак коллизий и предпочтителен для критически важных применений.
Инструмент SHA-256MD5 чрезвычайно быстр — современные GPU могут вычислять миллиарды хешей в секунду, а радужные таблицы быстро расправляются с распространёнными паролями. Для хранения паролей используйте bcrypt, scrypt или Argon2.
Генератор паролейКатегорически НЕТ для безопасности (цифровые подписи, пароли, TLS). Но для небезопасных применений (проверка повреждения файлов, дедупликация, ключи кэша) MD5 всё ещё подходит, поскольку у злоумышленников нет стимула создавать коллизии.
MD5 — односторонняя функция и математически не может быть обращена, но радужные таблицы и грубая сила могут восстановить слабые пароли за секунды. Поэтому MD5 никогда не должен использоваться для хранения паролей.
Нет. Инструмент использует фрагментное инкрементальное чтение — файлы не загружаются полностью в память, поэтому даже многогигабайтные файлы обрабатываются плавно с отзывчивым интерфейсом.
HMAC-MD5 — это хеш с ключом, которому требуется секретный ключ. Хотя простой MD5 скомпрометирован, HMAC-MD5 по-прежнему безопасен, когда ключ неизвестен (хотя рекомендуется миграция на HMAC-SHA256).
Генератор HMACMD5 (Message-Digest Algorithm 5) — это 128-битная хеш-функция, разработанная Рональдом Ривестом в 1991 году (RFC 1321), которая создаёт фиксированный 32-символьный шестнадцатеричный дайджест из произвольного ввода. Широко использовавшийся для цифровых подписей, проверки сертификатов и хранения паролей, MD5 был скомпрометирован атакой коллизий Ван и др. в 2004 году, а вредоносное ПО Flame использовало коллизии MD5 для подделки доверенного CA-сертификата в 2008 году.
**Статус безопасности**: NIST официально отказался от MD5 для цифровых подписей в SP 800-131A (2011). Однако MD5 остаётся полезным для небезопасных сценариев: проверки целостности файлов от случайного повреждения, дедупликации данных и ключей кэша. Ключевой вопрос: получит ли злоумышленник выгоду от создания коллизии? Если нет, скорость MD5 является преимуществом.
**Никогда не используйте MD5 для хранения паролей**: MD5 чрезвычайно быстр (миллиарды хешей/секунду на GPU), что позволяет мгновенно взламывать распространённые пароли грубой силой. Хранение паролей ДОЛЖНО использовать bcrypt, scrypt или Argon2 — медленные хеши с настраиваемыми факторами стоимости, делающими грубую силу неосуществимой.
**HMAC-MD5 всё ещё безопасен**: хотя простой MD5 скомпрометирован, HMAC-MD5 (код аутентификации сообщений на основе хеша с ключом) остаётся безопасным, когда ключ неизвестен, поскольку конструкция HMAC не зависит напрямую от устойчивости хеша к коллизиям. Миграция на HMAC-SHA256 всё же рекомендуется.
Инструмент использует чистую реализацию MD5 на JavaScript (Web Crypto API больше не поддерживает MD5). Все вычисления выполняются локально в вашем браузере — файлы используют фрагментное инкрементальное чтение и никогда не загружаются на серверы.
| Алгоритм | Выходные биты | Длина Hex | Безопасность | Скорость | Рекомендуемое использование |
|---|---|---|---|---|---|
MD5 | 128 бит | 32 символа | ❌ Скомпрометирован (коллизии/прообраз) | Экстремальная | Контрольные суммы файлов, дедупликация, ключи кэша |
SHA-1 | 160 бит | 40 символов | ❌ Коллизии (2017) | Быстрый | Git, совместимость с устаревшими системами |
SHA-256 | 256 бит | 64 символа | ✅ Безопасный | Средняя | Цифровые подписи, сертификаты, блокчейн |
SHA-512 | 512 бит | 128 символов | ✅ Безопасный | Быстрый (64-бит) | Сценарии высокой безопасности, получение ключей |
bcrypt | - | 60 символов | ✅ Специализированный для паролей | Медленный (настраиваемый) | Хранение паролей |
| Год | Событие | Воздействие |
|---|---|---|
1991 | Рон Ривест разрабатывает MD5 (RFC 1321) | Заменяет MD4 и становится основным алгоритмом хеширования |
1996 | Обнаружен первый дефект псевдоколлизии в MD5 | Академическое сообщество выражает озабоченность |
2004 | Команда Ван Сяоюнь демонстрирует атаку коллизий MD5 | Безопасность цифровых подписей MD5 полностью нарушена |
2008 | Вредоносное ПО Flame подделывает CA-сертификаты через коллизию MD5 | NIST официально отказывается от MD5 для цифровых подписей |
2011 | NIST SP 800-131A официально запрещает MD5 для целей безопасности | Правительственные системы США постепенно отказываются от MD5 |
2024 | Опубликована новая статья об атаке на прообраз | Последняя линия обороны MD5 (устойчивость к прообразам) прорвана |
// Note: Web Crypto API does NOT support MD5 (deprecated)
// Use SHA-256 instead for new projects
async function sha256(message) {
const msgBuffer = new TextEncoder().encode(message);
const hashBuffer = await crypto.subtle.digest('SHA-256', msgBuffer);
return Array.from(new Uint8Array(hashBuffer)).map(b => b.toString(16).padStart(2,'0')).join('');
}
sha256('Hello World').then(console.log);
// MD5 in Node.js using crypto module
const crypto = require('crypto');
const md5 = crypto.createHash('md5').update('Hello World').digest('hex');
console.log(md5); // b10a8db164e0754105b7a99be72e3fe5import hashlib
text = 'Hello World'
md5_hash = hashlib.md5(text.encode('utf-8')).hexdigest()
print(md5_hash) # b10a8db164e0754105b7a99be72e3fe5
# File MD5 (chunked for large files)
def md5_file(filepath, chunk_size=8192):
md5 = hashlib.md5()
with open(filepath, 'rb') as f:
while chunk := f.read(chunk_size):
md5.update(chunk)
return md5.hexdigest()
# HMAC-MD5
import hmac
hmac_md5 = hmac.new(b'secret-key', b'Hello World', hashlib.md5).hexdigest()
print(hmac_md5)import java.security.MessageDigest;
import java.nio.charset.StandardCharsets;
public class MD5Example {
public static String md5(String input) throws Exception {
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] hash = md.digest(input.getBytes(StandardCharsets.UTF_8));
StringBuilder sb = new StringBuilder();
for (byte b : hash) sb.append(String.format("%02x", b));
return sb.toString();
}
public static void main(String[] args) throws Exception {
System.out.println(md5("Hello World"));
// b10a8db164e0754105b7a99be72e3fe5
}
}
// Note: Use SHA-256 for new code: MessageDigest.getInstance("SHA-256")