Хэш-функции: MD5, SHA-256 и другие — полный гайд

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

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

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

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

Ключевые свойства:

  • Детерминированность — одинаковый вход всегда даёт одинаковый выход
  • Фиксированная длина — хэш всегда одного размера независимо от входа
  • Однонаправленность — невозможно восстановить исходные данные из хэша
  • Лавинный эффект — малейшее изменение входа полностью меняет хэш
  • Устойчивость к коллизиям — сложно найти два разных входа с одинаковым хэшем

Пример

SHA-256("Hello") = 185f8db32271fe25f561a6fc938b2e26...
SHA-256("Hello.") = f52fbd32b2b3b86ff88ef6c490628285... (совершенно другой!)

Попробуйте сами в генераторе хэшей.

Популярные алгоритмы

MD5 (Message Digest 5)

  • Длина: 128 бит (32 hex-символа)
  • Скорость: очень быстрый
  • Безопасность: ❌ взломан, небезопасен

Пример: 5d41402abc4b2a76b9719d911017c592

Статус: MD5 криптографически взломан с 2004 года. Коллизии находятся за секунды. Не используйте для безопасности!

Где ещё применяется: контрольные суммы файлов (не для безопасности), быстрая проверка дубликатов, legacy-системы.

SHA-1 (Secure Hash Algorithm 1)

  • Длина: 160 бит (40 hex-символов)
  • Скорость: быстрый
  • Безопасность: ⚠️ устарел, не рекомендуется

Пример: aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d

Статус: Теоретически взломан в 2017 году (атака SHAttered). Google и Microsoft отказались от SHA-1 в сертификатах.

Где ещё применяется: Git (для идентификаторов коммитов), старые системы.

SHA-256 (SHA-2 family)

  • Длина: 256 бит (64 hex-символа)
  • Скорость: средний
  • Безопасность: ✅ надёжен

Пример: 185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Статус: Стандарт для большинства применений. Используется в Bitcoin, TLS, цифровых подписях.

SHA-512

  • Длина: 512 бит (128 hex-символов)
  • Скорость: на 64-битных системах быстрее SHA-256
  • Безопасность: ✅ максимальная

Когда использовать: когда нужен максимальный запас прочности или работа на 64-битных системах.

SHA-3

  • Длина: 224/256/384/512 бит
  • Скорость: медленнее SHA-2
  • Безопасность: ✅ альтернативный дизайн

Особенность: Основан на другом принципе (Keccak), чем SHA-2. Если в SHA-2 найдут уязвимость, SHA-3 останется безопасным.

Сравнительная таблица

Алгоритм Длина Безопасность Применение
MD5128 бит❌ ВзломанКонтрольные суммы
SHA-1160 бит⚠️ УстарелLegacy, Git
SHA-256256 бит✅ НадёженСтандарт
SHA-512512 бит✅ НадёженВысокая безопасность
SHA-3256+ бит✅ НадёженАльтернатива SHA-2

Где применяются хэши

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

Пароли никогда не хранятся в открытом виде. Хранится хэш:

password = "secret123"
stored = SHA256(password + salt)
// При входе: SHA256(введённый + salt) == stored?
⚠️ Важно

Для паролей используйте специализированные алгоритмы: bcrypt, Argon2, scrypt. Они специально медленные, что защищает от перебора.

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

Скачали ISO-образ? Проверьте хэш:

sha256sum ubuntu.iso
# Сравните с хэшем на официальном сайте

Если хэши совпадают — файл не повреждён и не подменён.

3. Цифровые подписи

Подписывается не весь документ, а его хэш:

  1. Вычисляется хэш документа
  2. Хэш шифруется приватным ключом → подпись
  3. Получатель расшифровывает подпись публичным ключом
  4. Сравнивает с хэшем полученного документа

4. Блокчейн

Bitcoin использует SHA-256:

  • Хэш предыдущего блока связывает цепочку
  • Майнинг — поиск хэша с нужным количеством нулей
  • Адреса кошельков — хэши публичных ключей

5. Дедупликация данных

Облачные хранилища не хранят одинаковые файлы дважды:

hash = SHA256(file)
if hash in storage:
    return existing_link  # Файл уже есть
else:
    save(file)

6. HMAC — проверка подлинности сообщений

Хэш с секретным ключом подтверждает, что сообщение не изменено:

HMAC-SHA256(key, message) → подпись

Используется в API (подпись запросов), JWT токенах, cookies.

Частые заблуждения

❌ «Хэш — это шифрование»

Нет! Шифрование обратимо (можно расшифровать), хэширование — нет. Это разные инструменты для разных задач.

❌ «Можно расшифровать хэш»

Математически невозможно. Но можно:

  • Перебрать варианты (brute force)
  • Использовать радужные таблицы (precomputed hashes)
  • Поэтому важны соль и медленные алгоритмы для паролей

❌ «MD5 достаточно безопасен»

Нет! MD5 взломан. Коллизии создаются за секунды. Для любых задач безопасности используйте SHA-256+.

Какой алгоритм выбрать

  • Контрольные суммы файлов: SHA-256
  • Хранение паролей: bcrypt или Argon2 (не простые хэши!)
  • Цифровые подписи: SHA-256 или SHA-512
  • Быстрая проверка дубликатов: SHA-256 (MD5 если не критична безопасность)
  • Новые проекты: SHA-256 по умолчанию, SHA-3 для паранойи

Попробуйте онлайн

Наш генератор хэшей поддерживает:

  • MD5 (для совместимости)
  • SHA-1 (для legacy)
  • SHA-256 (рекомендуется)
  • SHA-512 (максимальная безопасность)

Вычисление происходит локально в браузере — ваши данные не передаются на сервер.