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

Вычисляйте 128-битный хеш MD5 текста, hex-байтов или файла. Хеш обновляется по мере ввода, а поле «Сравнить с» покажет, совпадает ли он с ожидаемой контрольной суммой.

Все алгоритмы

Работает полностью в браузере. Данные никуда не загружаются.

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

  1. Введите или вставьте текст, переключите формат ввода на «Hex», чтобы ввести байты, или нажмите «Открыть файл», чтобы хешировать файл байт в байт.
  2. Оставьте в параметре «Кодировка текста» значение UTF-8, если исходный хеш не был получен из текста в другой кодировке.
  3. В параметре «Формат вывода» выберите «hex (нижний регистр)», «HEX (верхний регистр)» или «Base64».
  4. Чтобы проверить скачанный файл, вставьте опубликованный хеш MD5 в поле «Сравнить с» и убедитесь, что появилась отметка «Совпадает».

Что такое MD5?

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

Хеширование работает только в одну сторону: ключа нет, и «расшифровать» хеш MD5 обратно в исходные данные невозможно. Сайты, которые обещают обратить MD5, просто ищут хеш в огромных таблицах хешей слов и утёкших паролей. Именно поэтому MD5 короткого пароля без соли часто находится за считаные секунды.

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

Против злоумышленника — нет. В 2004 году Ван Сяоюнь и её коллеги опубликовали практические коллизии: два разных набора входных данных с одинаковым MD5. Затем появились коллизии с выбранным префиксом: в 2008 году исследователи с их помощью создали поддельный сертификат удостоверяющего центра, а в 2012 году вредоносная программа Flame использовала такую коллизию, чтобы подделать сертификат, с которым её код выглядел подписанным Microsoft. Сегодня обычный ноутбук находит коллизию MD5 за секунды, а RFC 6151 прямо указывает, что MD5 больше неприемлем там, где требуется стойкость к коллизиям, например в цифровых подписях.

При этом MD5 по-прежнему годится как контрольная сумма для защиты от случайных повреждений, например недокачанного файла или сбоя одного бита на диске, а также для ключей кеша и дедупликации доверенных данных. Если файл или его контрольная сумма могут исходить от злоумышленника, используйте SHA-256.

Hex, Base64 и несовпадающие хеши

MD5 обычно выводят в hex — именно так его печатает md5sum. Некоторые протоколы вместо этого передают исходные 16 байт в Base64, например HTTP-заголовок Content-MD5, который используют API облачных хранилищ вроде Amazon S3. Выберите «Base64» в параметре «Формат вывода» или преобразуйте уже имеющееся значение с помощью инструмента Hex в Base64.

Если ваш MD5 отличается от результата другого инструмента, значит, различаются входные байты. Обычные причины — перевод строки в конце, окончания строк Windows или другая кодировка текста: «café» занимает 5 байт в UTF-8, но 4 байта в ISO-8859-1, поэтому два хеша не имеют ничего общего.

$ echo "hello" | md5sum      # хеширует "hello\n"
b1946ac92492d2347c6235b4d2611184  -
$ printf 'hello' | md5sum    # хеширует "hello"
5d41402abc4b2a76b9719d911017c592  -

MD5 в командной строке и в коде

md5sum file.iso                          # Linux
md5 file.iso                             # macOS
certutil -hashfile file.iso MD5          # Windows
Get-FileHash file.iso -Algorithm MD5     # PowerShell

# Python
import hashlib
hashlib.md5('hello'.encode('utf-8')).hexdigest()

// Node.js
require('crypto').createHash('md5').update('hello', 'utf8').digest('hex')

Встроенный в браузеры Web Crypto API не поддерживает MD5, поэтому эта страница вычисляет его на JavaScript прямо на вашем устройстве и ничего не загружает на сервер. Таблица «Все алгоритмы» под результатом показывает SHA-1, SHA-256, SHA-384, SHA-512, CRC-32 и CRC-32C для тех же входных данных.

Примеры

Исходные данные (UTF-8)MD5
Hello, World!65a8e27d8879283831b664bd8b7f0ad4
Base64.is2e3c0e8b828164a8db7f62146ca87e14
你好7eca689f0d3389d9dea66ae112e5cfd7

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

Можно ли расшифровать хеш MD5?
Нет. MD5 — односторонняя хеш-функция, а не шифрование, поэтому расшифровывать нечего: так называемый «дешифратор MD5» может вернуть только те входные данные, которые уже есть в его таблицах. Если исходные данные понадобятся позже, зашифруйте их, а если их не нужно держать в секрете, закодируйте в Base64 — это преобразование полностью обратимо.
Достаточно ли MD5 для проверки скачанного файла?

Случайные повреждения он обнаруживает надёжно. Но коллизии получить дёшево, поэтому тот, кто заранее подготовил файл, может создать второй, отличающийся файл с тем же MD5. Для загрузок, важных с точки зрения безопасности, сверяйте хеш SHA-256 из доверенного источника или цифровую подпись.

Какой длины хеш MD5?
128 бит, то есть 16 байт: 32 символа в hex или 24 символа в Base64 с == на конце. 32-символьная hex-строка может также оказаться хешем MD4 или NTLM; определитель типа хеша перечислит возможные варианты.
Можно ли вычислить MD5 большого файла?
Да. Откройте файл, и его байты будут хешированы в браузере без загрузки на сервер. Ограничение — объём памяти, доступный браузеру, поэтому файлы размером в несколько гигабайт лучше хешировать с помощью md5sum или certutil.
Стоит ли хранить пароли в виде MD5?
Нет. MD5 специально сделан быстрым, поэтому одна видеокарта проверяет миллиарды вариантов в секунду. Храните пароли с помощью Argon2id, scrypt, bcrypt или PBKDF2: они добавляют соль и намеренно работают медленно. А надёжные пароли с самого начала поможет создать генератор паролей.