#️⃣
Безопасность
May 21, 20267 min readBy BrowseryTools Team

MD5, SHA-256, SHA-512: бесплатный генератор хешей и когда использовать каждый

Поймите разницу между MD5, SHA-1, SHA-256 и SHA-512. Мгновенно генерируйте хеши файлов и текста в браузере. Узнайте, когда уместен каждый алгоритм.

хешMD5SHA-256SHA-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).

Таблица сравнения алгоритмов

АлгоритмДлина выводаСкорость (относительная)Статус безопасностиЧастые сценарии
MD5128 бит (32 hex-символа)Самый быстрыйВзломан — коллизии продемонстрированыКонтрольные суммы вне безопасности, ключи кэша, устаревшие системы
SHA-1160 бит (40 hex-символов)БыстрыйУстарел — существуют практические коллизииУстаревший Git, старый TLS (устарел), некоторая устаревшая аутентификация
SHA-256256 бит (64 hex-символа)БыстрыйБезопасен — текущий стандартTLS-сертификаты, JWT (HS256), подписание кода, Bitcoin
SHA-512512 бит (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

Всё остаётся на вашем устройстве. Генератор хешей BrowseryTools использует встроенный в браузер 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 →