Что это за инструмент?
MD5 — это хеш-функция, которая преобразует любые входные данные в фиксированный 32-символьный шестнадцатеричный «отпечаток». Одни и те же входные данные всегда дают один и тот же хеш, а изменение даже одного символа приводит к совершенно другому результату. Благодаря этому хеши широко используются в качестве контрольных сумм, ключей кэша, для дедупликации и проверки целостности данных.
Примечание по безопасности: алгоритм MD5 с криптографической точки зрения является уязвимым — можно сгенерировать коллизии — поэтому его нельзя использовать для паролей или подписей. Для этих целей следует использовать SHA-256 (также приведённый ниже) или специальные алгоритмы хеширования паролей, такие как bcrypt. MD5 по-прежнему подходит для целей, не связанных с безопасностью, таких как контрольные суммы и ключи кэша.
Зачем его использовать?
- Сгенерировать контрольные суммы, чтобы убедиться, что файл или строка не были случайно изменены.
- Создать детерминированные ключи кэша и идентификаторы дедупликации.
- Сравните с известным значением MD5, чтобы проверить целостность данных.
- Получите SHA-1 и SHA-256 одновременно — нет необходимости использовать дополнительный инструмент.
- 100 % локально: ваши данные никогда не покидают браузер.
Как использовать
- Введите или вставьте текст в поле ввода.
- Нажмите «Сгенерировать хеш».
- Прочитайте результаты вычислений MD5, SHA-1 и SHA-256 (установите флажок «Uppercase», если ваша система требует использования заглавных букв).
- Нажмите «Копировать» рядом с нужным хешем.
Пример
Ввод
helloРезультат
MD5: 5d41402abc4b2a76b9719d911017c592
SHA-256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824Хэши являются детерминированными: строка «hello» всегда дает именно эти значения на любом инструменте и при любом выполнении.
Какой хеш лучше использовать?
Все три алгоритма являются односторонними хэширующими функциями, но они не взаимозаменяемы — правильный выбор полностью зависит от того, нужна ли вам безопасность или просто «отпечаток».
| Алгоритм | Размер выходного файла | Используйте его для | Не используйте его для |
|---|---|---|---|
| MD5 | 128 бит (32 шестнадцатеричных символа) | Контрольные суммы, ключи кэша, дедупликация, обнаружение непреднамеренных изменений файлов | Пароли, цифровые подписи, любые данные, связанные с безопасностью — коллизии можно создать искусственно |
| SHA-1 | 160 бит (40 шестнадцатеричных символов) | Совместимость с устаревшими системами (например, старые хеши коммитов Git) | Новые проекты, подверженные угрозам безопасности — практические атаки на основе коллизий известны с 2017 года |
| SHA-256 | 256 бит (64 шестнадцатеричных символа) | Цифровые подписи, сертификаты TLS, блокчейн, контрольные суммы — там, где важна защита от несанкционированного вмешательства | Хранение паролей в открытом виде — даже алгоритм SHA-256 слишком быстр для этого; вместо него используйте bcrypt, scrypt или Argon2 |
Типичные сценарии использования
- Проверка соответствия загруженного файла контрольной сумме, указанной издателем, перед его запуском путем вычисления хеш-суммы файла и сравнения полученного результата.
- Генерация детерминированного ключа кэша на основе URL-адреса или строки запроса, чтобы одинаковые запросы всегда сопоставлялись с одной и той же записью кэша.
- Удаление дубликатов из большого списка записей путем вычисления хэш-кода для каждой из них и сравнения хэш-кодов вместо сравнения полного текста.
- Быстрая проверка на то, являются ли две копии файла байт-идентичными, без их непосредственного открытия или сравнения.
Почему коллизии важны для безопасности, но не для контрольных сумм
Коллизия хешей означает, что два разных входных значения дают одинаковый хеш — с математической точки зрения это неизбежно для любой хеш-функции (поскольку входные данные бесконечны, а выходные имеют фиксированную длину), однако практический риск полностью зависит от конкретного сценария использования. В случае защитной подписи специально созданная коллизия позволяет злоумышленнику подменить легитимный файл вредоносным, сохранив при этом тот же хеш, что и было продемонстрировано в отношении MD5 с 2004 года и в отношении SHA-1 с 2017 года. В случае контрольной суммы или ключа кэша никто не пытается создать коллизию — вы просто проверяете, не был ли файл случайно повреждён или не совпали ли две произвольные строки — поэтому та же математическая уязвимость, которая подрывает безопасность MD5 в контексте защиты данных, практически не влияет на его использование в целях, не связанных с безопасностью.
Часто задаваемые вопросы
Можно ли восстановить исходный текст из хеша MD5?
Нет — хеширование по своей сути является односторонним процессом; исходные данные невозможно вычислить по хешу. Сайты, предлагающие «расшифровку MD5», просто ищут хеши в огромных заранее составленных таблицах типичных входных данных, поэтому уникальные входные данные не поддаются обратному преобразованию.
Безопасен ли алгоритм MD5 для хранения паролей?
Нет, ни в коем случае. MD5 легко взломать методом перебора, к тому же известны атаки с использованием коллизий. Для паролей используйте bcrypt, scrypt или Argon2. MD5 допустим только для целей, не связанных с безопасностью, таких как контрольные суммы.
Почему один и тот же текст дает другой хеш, чем другой инструмент?
Как правило, это незаметные различия: конечный символ новой строки или пробел, разные конечные символы строк (\r\n и \n) или разная кодировка текста. Входные данные, идентичные на уровне байтов, всегда дают одинаковый хеш.
В чём разница между MD5, SHA-1 и SHA-256?
Они различаются по длине выходного кода и уровню безопасности: алгоритмы MD5 (128 бит) и SHA-1 (160 бит) уже не считаются надежными для обеспечения безопасности; SHA-256 (256 бит) является действующим стандартом и по-прежнему остается безопасным. Если вы сомневаетесь, используйте SHA-256.
Отправляется ли мой текст на сервер для хеширования?
Нет. MD5 вычисляется с помощью JavaScript, а SHA-1/SHA-256 — с помощью встроенного в ваш браузер API Web Crypto — все операции выполняются на вашем устройстве.