MD5, SHA-256, SHA-512: бесплатный генератор хешей и когда использовать каждый
Поймите разницу между MD5, SHA-1, SHA-256 и SHA-512. Мгновенно генерируйте хеши файлов и текста в браузере. Узнайте, когда уместен каждый алгоритм.
Каждый раз, когда вы скачиваете релиз ПО, проверяете подлинность файла, подписываете JWT-токен или храните пароль пользователя, в фоне работает криптографическая хеш-функция. Хеш-функции — один из фундаментальных примитивов современной компьютерной безопасности — и всё же различия между MD5, SHA-1, SHA-256 и SHA-512 широко неправильно понимаются, что приводит к реальным ошибкам безопасности в продакшен-системах.
Это руководство объясняет, что такое хеш-функции, как работает каждый основной алгоритм, когда какой уместен (и когда опасно неуместен) и как использовать генератор хешей BrowseryTools, чтобы мгновенно вычислять хеши в браузере с полной приватностью.
Что такое криптографическая хеш-функция?
Криптографическая хеш-функция принимает ввод произвольной длины и выдаёт вывод фиксированной длины, называемый дайджестом или хешем. Хорошую криптографическую хеш-функцию определяют четыре свойства:
- Детерминированность: один и тот же ввод всегда даёт ровно один и тот же вывод. У хеш-функций нет внутреннего состояния — для одних и тех же байтов вы всегда получаете один дайджест.
- Однонаправленность (стойкость к прообразу): по выводу хеша должно быть вычислительно невозможно восстановить исходный ввод. Хеш-функции спроектированы так, чтобы их легко было вычислить в одну сторону и фактически невозможно обратить.
- Фиксированная длина вывода: независимо от того, один байт ввод или один гигабайт, вывод всегда одной длины. SHA-256 всегда выдаёт 256-битный (32-байтный) дайджест.
- Лавинный эффект: изменение одного бита во вводе полностью преобразует вывод. Хеш
helloсовершенно не похож на хешhello!— у них нулевая предсказуемая структура. Это делает хеши полезными как отпечатки.
Пятое свойство — стойкость к коллизиям — отделяет криптографически стойкие хеши от взломанных: должно быть вычислительно невозможно найти два разных ввода, дающих один и тот же вывод. Именно здесь MD5 и SHA-1 провалились.
MD5: быстрый, вездесущий и взломанный для безопасности
MD5 (Message Digest 5) был разработан Роном Ривестом и опубликован в 1991 году. Он выдаёт 128-битный (16-байтный) дайджест, обычно представляемый 32-символьной шестнадцатеричной строкой вроде 5d41402abc4b2a76b9719d911017c592. Более десятилетия он был доминирующим алгоритмом хеширования для всего — от контрольных сумм файлов до хранения паролей.
В 2004 году криптографы продемонстрировали практические атаки коллизий против MD5. К 2008 году исследователи использовали атаки коллизий для подделки мошеннического сертификата центра сертификации, которому доверяли все основные браузеры. MD5 теперь окончательно взломан для любой цели безопасности, где важна стойкость к коллизиям.
Где MD5 ещё приемлем:
- Проверки целостности файлов вне безопасности, где вы контролируете и генерацию, и проверку (подтверждение, что файл не повредился при передаче, а не что его не подделали).
- Контрольные суммы во внутренних системах, где злоумышленник не входит в модель угроз.
- Совместимость с устаревшими системами, где у вас нет выбора, кроме как соответствовать существующей реализации.
- Ключи кэша и хеш-таблицы, где безопасность нерелевантна, а важна скорость.
Где MD5 никогда нельзя использовать: TLS-сертификаты, цифровые подписи, подписание кода или что-либо, где злоумышленник мог бы выиграть от нахождения коллизии.
SHA-1: 160-битный, устаревший, всё ещё повсюду
SHA-1 (Secure Hash Algorithm 1) был опубликован NIST в 1995 году и выдаёт 160-битный дайджест. Он был стандартом для TLS-сертификатов, цифровых подписей и подписания ПО на протяжении 2000-х. Google Project Zero продемонстрировал практическую коллизию SHA-1 в 2017 году (атака SHAttered), создав два разных PDF-файла с идентичными хешами SHA-1. Это положило конец использованию SHA-1 в TLS — все основные производители браузеров перестали принимать сертификаты SHA-1 в том же году.
SHA-1 всё ещё встречается в некоторых заметных местах:
- Git: Git исторически использовал SHA-1 для идентификации каждого объекта в репозитории — коммитов, блобов, деревьев и тегов. Git активно мигрирует на SHA-256 (см. ниже), но репозитории Git на SHA-1 остаются крайне распространёнными. Для этого случая стойкость к коллизиям важна меньше, потому что злоумышленнику понадобился бы доступ к файловой системе, чтобы использовать коллизию.
- Устаревшие системы аутентификации и более старые реализации HMAC.
- Некоторое старое корпоративное ПО, которое не обновлялось.
Для любой новой работы: избегайте SHA-1. Используйте SHA-256 или SHA-512.
SHA-256: текущий стандарт
SHA-256 — часть семейства SHA-2, опубликованного NIST в 2001 году. Он выдаёт 256-битный (32-байтный) дайджест — вдвое больше вывода MD5 и на 60% больше SHA-1. Никаких практических атак коллизий или прообраза против SHA-256 не продемонстрировано. Он остаётся стандартом для критичного к безопасности хеширования в 2026 году.
SHA-256 используется повсюду:
- TLS-сертификаты: форум CA/Browser обязал SHA-256 как минимум для подписей сертификатов. Каждое HTTPS-соединение, которое вы устанавливаете, закреплено SHA-256.
- Подписание кода: macOS, Windows Authenticode и менеджеры пакетов Linux (APT, RPM) используют SHA-256 для проверки целостности ПО.
- JWT-токены: алгоритм
HS256в JSON Web Tokens — это HMAC-SHA-256. Это безусловно самый распространённый алгоритм подписи JWT в развёрнутых системах. - Bitcoin: алгоритм proof-of-work Bitcoin — это двойной SHA-256 (SHA-256, применённый дважды).
- Git (нового поколения): формат объектов SHA-256 в Git (включается через
--object-format=sha256) использует SHA-256 для всех ID объектов. - Проверка целостности файлов, публикуемая вместе со скачиваниями ПО.
Если вам нужно выбрать хеш-функцию и нет особых ограничений, SHA-256 — правильный выбор по умолчанию в 2026 году.
SHA-512: больший вывод, иногда быстрее
SHA-512 тоже часть семейства SHA-2 и выдаёт 512-битный (64-байтный) дайджест. Он обеспечивает больший запас безопасности, чем SHA-256 — 512 бит вывода означают, что теоретическое пространство атаки полным перебором в 2256 раз больше. На практике этот дополнительный запас нерелевантен для большинства приложений, поскольку SHA-256 уже вычислительно невозможно взломать.
Контринтуитивная характеристика производительности: SHA-512 быстрее SHA-256 на современных 64-битных процессорах при хешировании больших данных. SHA-512 обрабатывает данные блоками по 1024 бита с 64-битными словными операциями, тогда как SHA-256 использует блоки по 512 бит с 32-битными операциями. На 64-битном процессоре 64-битные операции эффективнее ложатся на оборудование. Это делает SHA-512 предпочтительным выбором для приложений, хеширующих большие файлы на 64-битных серверах.
Используйте SHA-512, когда:
- Вы хешируете большие объёмы данных на 64-битном оборудовании и хотите максимальную пропускную способность.
- Ваша система требует дополнительного запаса безопасности по нормативным или комплаенс-причинам.
- Вы реализуете HMAC-SHA-512 (используется в некоторых реализациях JWT с
HS512).
Таблица сравнения алгоритмов
| Алгоритм | Длина вывода | Скорость (относительная) | Статус безопасности | Частые сценарии |
|---|---|---|---|---|
| MD5 | 128 бит (32 hex-символа) | Самый быстрый | Взломан — коллизии продемонстрированы | Контрольные суммы вне безопасности, ключи кэша, устаревшие системы |
| SHA-1 | 160 бит (40 hex-символов) | Быстрый | Устарел — существуют практические коллизии | Устаревший Git, старый TLS (устарел), некоторая устаревшая аутентификация |
| SHA-256 | 256 бит (64 hex-символа) | Быстрый | Безопасен — текущий стандарт | TLS-сертификаты, JWT (HS256), подписание кода, Bitcoin |
| SHA-512 | 512 бит (128 hex-символов) | Самый быстрый на 64-битных для больших данных | Безопасен — больший запас прочности | Хеширование больших файлов, JWT (HS512), высокобезопасные приложения |
Проверка целостности файлов: практический пример
Один из самых частых и законных способов применения криптографических хешей — проверка того, что скачанный файл — именно то, что задумал издатель: не повреждён при передаче и не подделан третьей стороной. Большинство крупных проектов ПО публикуют контрольные суммы SHA-256 вместе со своими скачиваниями.
Рабочий процесс выглядит так:
- Скачайте файл из официального источника.
- Скачайте опубликованную контрольную сумму из того же официального источника (в идеале подписанную PGP).
- Вычислите хеш SHA-256 скачанного файла.
- Сравните ваш вычисленный хеш с опубликованным символ за символом. Любое различие означает, что файл — не то, что распространял издатель.
Генератор хешей BrowseryTools поддерживает хеширование файлов — перетащите файл, и он вычислит хеш локально в вашем браузере, ничего не загружая. Сравните результат напрямую с опубликованной контрольной суммой.
Хранение паролей: единственное, что хеши не могут делать безопасно
Критическое предупреждение: никогда не храните пароли с помощью обычных хеш-функций
Хранение паролей как хешей MD5, SHA-256 или SHA-512 — даже с солью — небезопасно и является серьёзной уязвимостью в любой продакшен-системе. Вот почему:
- Хеш-функции общего назначения спроектированы быть быстрыми. Современный GPU может вычислять миллиарды хешей SHA-256 в секунду. Если вашу базу данных взломают, злоумышленник сможет перебрать каждый распространённый пароль за минуты.
- Радужные таблицы — заранее вычисленные таблицы соответствия хешей вводам — могут взломать несолёные хеши распространённых паролей за миллисекунды.
- Даже с уникальной солью на пользователя сырая скорость SHA-256 облегчает атаку на слабые или средние по надёжности пароли в масштабе.
Используйте вместо этого функцию хеширования паролей: bcrypt, scrypt или Argon2 (победитель конкурса Password Hashing Competition). Они намеренно медленные и требовательные к памяти, что делает атаки полным перебором на порядки дороже. Большинство современных фреймворков включают их «из коробки». Argon2id — текущая рекомендация для новых систем.
Как Git использует SHA-1 (и переходит на SHA-256)
Git использует хеш-функцию для идентификации каждого объекта в репозитории. Каждый коммит, файл (блоб), список каталога (дерево) и тег хранятся в базе объектов под своим хешем SHA-1. Когда вы запускаете git log, длинные hex-строки, которые вы видите — вроде c206f4b3a9d72bc0e53a0e1a6e4bdf8c7f9d2e51 — это хеши SHA-1 объектов коммитов.
Git выбрал SHA-1 в 2005 году ради скорости и потому, что на тот момент SHA-1 не был взломан. Роль хешей в Git слегка отличается от традиционного использования в безопасности: Git применяет их как ключи контентно-адресуемого хранилища, а не как доказательства аутентичности. Вы доверяете самому содержимому — хеш лишь эффективный способ его найти и обнаружить случайное повреждение.
После коллизии SHA-1 SHAttered в 2017 году проект Git начал работу над переходом на SHA-256. Новый формат объектов (--object-format=sha256) доступен в Git 2.29+ и используется по умолчанию у некоторых новых хостов репозиториев. Существующие репозитории можно мигрировать, хотя переход сложен, потому что меняется каждый ID объекта.
HMAC: аутентификация сообщений на основе хеша
Обычный хеш проверяет целостность данных (данные не изменились), но не подлинность (данные пришли от того, от кого вы думаете). Если злоумышленник может перехватить сообщение и пересчитать хеш после его изменения, обычный хеш не даёт защиты.
HMAC (Hash-based Message Authentication Code) решает это, включая секретный ключ в вычисление хеша. Результат может произвести только тот, кто знает ключ. Проверка HMAC доказывает и то, что данные целы, и то, что они произведены стороной с доступом к общему секрету.
HMAC-SHA256 повсюду:
- JWT-токены (HS256): сервер подписывает заголовок и полезную нагрузку токена с помощью HMAC-SHA256, используя секретный ключ. Клиенты не могут подделать действительные токены без ключа.
- Подписание запросов API: AWS Signature Version 4 использует HMAC-SHA256 для аутентификации запросов API. Детали запроса и производный ключ подписи хешируются вместе, так что ни то ни другое нельзя изменить без аннулирования подписи.
- Целостность cookie: многие веб-фреймворки используют HMAC для подписи сессионных cookie, не позволяя пользователям подделывать собственные сессионные данные.
Как пользоваться генератором хешей BrowseryTools
Генератор хешей поддерживает хеширование как текстового ввода, так и загружаемых файлов полностью в вашем браузере. Вот как он работает:
- Хеширование текста: вставьте любой текст в поле ввода. Инструмент сразу вычисляет и отображает хеш для каждого поддерживаемого алгоритма одновременно — MD5, SHA-1, SHA-256 и SHA-512 — чтобы вы могли сравнить их бок о бок и выбрать нужный.
- Хеширование файлов: кликните по полю файла или перетащите любой файл. Файл считывается File API вашего браузера и хешируется локально. Большие файлы обрабатываются по частям, чтобы избежать нагрузки на память. Ни один байт вашего файла не покидает устройство.
- Выбор алгоритма: выберите конкретный алгоритм, чтобы сосредоточиться на нём для вашего случая. Полный hex-дайджест отображается и копируется в один клик.
- Скачивание как файла: для целей документирования или распространения экспортируйте дайджест хеша как текстовый файл — полезно для публикации контрольных сумм вместе с вашими собственными релизами ПО.
Приватность: Web Crypto API
window.crypto.subtle (Web Crypto API) для вычисления хешей семейства SHA. Это нативная криптография, реализованная C++-движком вашего браузера — а не математика на JavaScript. Для MD5 локально работает чисто JavaScript-реализация. В обоих случаях никакие данные — ни единый байт вашего текста или содержимого файла — никогда не передаются на серверы BrowseryTools или любой сторонний сервис. Вычисление хеша происходит полностью внутри процесса вашего браузера.Выбор правильного алгоритма: руководство по решению
- Целостность файлов / контрольные суммы (вне безопасности): MD5 или SHA-256. SHA-256 предпочтителен для всего публичного, даже если модель угроз — только случайное повреждение, поскольку использование взломанного алгоритма по выбору трудно оправдать перед аудиторами.
- TLS, подписание кода, операции с сертификатами: SHA-256 (обязательно — SHA-1 отвергается).
- Подписание JWT: HMAC-SHA-256 (HS256) для симметричного или RS256/ES256 для асимметричного. Никогда MD5 или SHA-1.
- Хранение паролей: Argon2id, bcrypt или scrypt. Не любой SHA.
- Хеширование больших файлов на 64-битных серверах: SHA-512 для лучшей пропускной способности.
- Максимальный запас безопасности: SHA-512 или SHA-3 (SHA3-256, SHA3-512).
- Совместимость с устаревшим: то, что требует устаревшая система — но планируйте уход от MD5 и SHA-1.
Генерируйте хеши MD5, SHA-1, SHA-256 и SHA-512 мгновенно
Вставьте текст или перетащите файл. Всё хеширование происходит в вашем браузере с помощью Web Crypto API. Ничего не загружается. Ничего не логируется.
Открыть генератор хешей →Try the Tools — 100% Free, No Sign-Up
Everything runs in your browser. No uploads. No accounts. No ads.
Explore All Tools →