Все статьи
Криптография и безопасность

Сравнение хеш-функций: MD5, SHA-1, SHA-256, SHA-512

Сравнение хеш-алгоритмов: скорость, безопасность, размер, когда использовать каждый.

28 марта 2025
8 мин чтения
ConvertHub
#хеш#md5#sha#сравнение

Введение

Когда в проекте нужно хешировать данные, разработчик часто оказывается перед выбором: MD5, SHA-1, SHA-256 или SHA-512? Ответ не очевиден — разные алгоритмы оптимизированы под разные задачи. Где-то важна скорость, где-то — стойкость к коллизиям, где-то — компактность. В этой статье сравним популярные хеш-функции по ключевым параметрам и поможем выбрать подходящую для каждого сценария. Попробовать любой из алгоритмов можно в наших генераторах:MD5,SHA-256 иSHA-512.

Что такое хеш-функция

Хеш-функция — это алгоритм, который принимает входные данные произвольной длины и возвращает строку фиксированной длины. У хорошей криптографической хеш-функции четыре ключевых свойства:

  • Детерминированность: одинаковые входы дают одинаковый хеш.
  • Лавинный эффект: изменение одного бита полностью меняет выход.
  • Однонаправленность: по хешу нельзя восстановить вход.
  • Стойкость к коллизиям: сложно найти два разных входа с одинаковым хешем.

Краткое сравнение

АлгоритмГодРазмер выходаДлина блокаРаундовСтатус
MD51992128 бит512 бит64Сломан
SHA-11995160 бит512 бит80Сломан
SHA-2562001256 бит512 бит64Активен
SHA-5122001512 бит1024 бит80Активен
SHA3-2562015256 бит1088 бит24Активен

MD5

MD5 — старейший из рассматриваемых алгоритмов, разработанный Рональдом Ривестом в 1991–1992 годах. Выдаёт 128-битный хеш, что в HEX-представлении даёт 32 символа. Алгоритм исторически применялся для проверки целостности файлов, хранения паролей и цифровой подписи.

С 2004 года MD5 считается криптографически сломленным: китайский исследователь Сяоюнь Ван показал способ находить коллизии за секунды. После этого CA-центры перестали использовать MD5 для подписи сертификатов, а хранение паролей в MD5 стало считаться недопустимым.

Где MD5 ещё уместен: проверка случайного повреждения файлов (когда атакующий не пытается подделать хеш), ETag в HTTP, кэш-ключи. Подробности — в статье проMD5.

SHA-1

SHA-1 был разработан NSA и опубликован в 1995 году. Выдаёт 160-битный хеш (40 HEX-символов). Долгое время был стандартом для SSL-сертификатов и Git.

В 2017 году Google и CWI Institute опубликовали коллизию SHA-1 (проект SHAttered). После этого все основные браузеры перестали доверять SHA-1-сертификатам. Git постепенно мигрирует на SHA-256, хотя полная миграция займёт годы.

Где SHA-1 ещё встречается: Git (исторически), Bitcoin-адреса (в связке с RIPEMD-160), старые DSA-подписи. В новых проектах использовать не следует.

SHA-256

SHA-256 — часть семейства SHA-2, разработанного NSA и опубликованного в 2001 году. Выдаёт 256-битный хеш (64 HEX-символа). Сегодня это самый популярный криптографический алгоритм в мире.

Где применяется:

  • TLS-сертификаты (почти все современные HTTPS-сайты).
  • Блокчейн Bitcoin.
  • Цифровые подписи PDF, PAdES, CMS.
  • Контрольные суммы дистрибутивов Linux.
  • HMAC-SHA256 для подписи API и JWT.
  • PBKDF2-HMAC-SHA256 (для паролей, хотя bcrypt лучше).

Практических коллизий не найдено, квантовая угроза (алгоритм Гровера) снижает трудоёмкость с 2²⁵⁶ до 2¹²⁸ — это всё ещё за пределами возможностей обозримого будущего. Подробнее — в статье проSHA-256.

SHA-512

SHA-512 — старший брат SHA-256 из того же семейства SHA-2. Выдаёт 512-битный хеш (128 HEX-символов). Работает с 64-битными словами и блоками по 1024 бит.

На 64-битных процессорах SHA-512 часто работает быстрее SHA-256 за счёт работы с 64-битными инструкциями. Однако для большинства прикладных задач разница в безопасности между 256 и 512 битами несущественна — обе функции одинаково недоступны для взлома.

Где применять SHA-512:

  • Длинные хеши для криптовалюты (некоторые альткоины).
  • HMAC-SHA512 для API с высокими требованиями к безопасности.
  • Хеширование больших файлов на 64-битных серверах.
  • Цифровые подписи с повышенным запасом прочности.

Сравнение скорости

На современном железе (Apple M2, Single Core) скорость вычисления хешей для небольших сообщений выглядит примерно так:

АлгоритмCPU (однопоток)GPU RTX 4090
MD5~600 МБ/с~50 млрд хешей/с
SHA-1~500 МБ/с~25 млрд хешей/с
SHA-256~250 МБ/с~15 млрд хешей/с
SHA-512~350 МБ/с (64-bit)~5 млрд хешей/с
SHA3-256~150 МБ/с~3 млрд хешей/с

Цифры ориентировочные и зависят от реализации, но общая тенденция ясна: MD5 быстрее всех, SHA-512 на 64-битной архитектуре обгоняет SHA-256, SHA-3 — самый медленный.

Что выбрать для конкретной задачи

Проверка целостности файла

Если защита от целенаправленной подделки не нужна (например, проверка случайного повреждения при скачивании) — достаточно MD5. Если атакующий мог заменить файл — SHA-256 или SHA-512.

Хранение паролей

Ни один из перечисленных алгоритмов напрямую не подходит — все они слишком быстрые. Используйте bcrypt, scrypt или argon2id. Если очень нужен PBKDF2 — берите PBKDF2-HMAC-SHA256 с 600 000 итераций (рекомендация OWASP 2023).

Цифровые подписи и сертификаты

SHA-256 или SHA-512. SHA-1 и MD5 не использовать — современные браузеры и валидаторы отклонят подпись.

Подпись API-запросов (HMAC)

HMAC-SHA256 — оптимальный выбор. HMAC-SHA512 — если хотите запас на будущее. Подробнее — в статье про HMAC.

Кэш-ключи и дедупликация

Если коллизии не критичны — MD5 (32 байта, быстро). Если важна надёжность — SHA-256. Если место критично — рассмотрите xxHash или MurmurHash (некриптографические, но быстрее).

Git-подобные структуры данных

SHA-256 — современный стандарт. Git с 2020 года поддерживает SHA-256 как альтернативу SHA-1.

Дайджест-сравнение по свойствам

СценарийMD5SHA-1SHA-256SHA-512
Пароли
Цифровая подпись
Контрольная сумма
HMAC
Кэш-ключи△ (длинный)
Сертификаты

Пример: вычисление всех хешей сразу

const crypto = require('crypto');

const data = 'Hello, ConvertHub!';

const algorithms = ['md5', 'sha1', 'sha256', 'sha512'];
const hashes = {};

for (const algo of algorithms) {
  hashes[algo] = crypto.createHash(algo).update(data).digest('hex');
}

console.log(hashes);
// {
//   md5:    "1a79a4d60de6718e8e5b326e338ae533",
//   sha1:   "85f7d1f...",  // 40 символов
//   sha256: "33f7d2f...",  // 64 символа
//   sha512: "9d74e85..."   // 128 символов
// }

Что дальше: SHA-3 и BLAKE3

Семейство SHA-3 (Keccak) — победитель конкурса NIST 2012 года. Внутреннее устройство принципиально отличается от SHA-1/2: sponge-конструкция вместо Меркле-Дамгард. SHA-3 не имеет известных уязвимостей и считается стойким даже в сценариях, где SHA-2 может ослабнуть.

BLAKE3 — современный алгоритм 2020 года, в разы быстрее SHA-2 и SHA-3 на современном железе за счёт параллелизма. Подходит для проверки целостности больших файлов, но для криптографических подписей пока менее распространён.

Если вы проектируете новую систему с расчётом на десятилетие вперёд — стоит рассмотреть SHA-3 или BLAKE3 как более «будущестойкие» альтернативы.

Заключение

MD5 и SHA-1 — исторические алгоритмы, которые сегодня можно использовать только для неответственных задач. SHA-256 и SHA-512 — рабочий стандарт криптографии 2025 года, подходящий для подписи сертификатов, проверки целостности и HMAC-подписей. Для хранения паролей, впрочем, ни одна из этих функций не годится — там нужны медленные алгоритмы вроде bcrypt или argon2. Выбирайте хеш под задачу, а не «по умолчанию». Сгенерировать хеш любого из перечисленных алгоритмов можно в наших генераторах: MD5,SHA-256 иSHA-512.

Попробуйте эти инструменты

Похожие статьи