Хэш-функции — фундамент современной криптографии и информационной безопасности. Они используются везде: от проверки загруженных файлов до блокчейна. Разберёмся, как они работают и какую выбрать.
Что такое хэш-функция
Хэш-функция — это алгоритм, который превращает данные любого размера в строку фиксированной длины (хэш, дайджест).
Ключевые свойства:
- Детерминированность — одинаковый вход всегда даёт одинаковый выход
- Фиксированная длина — хэш всегда одного размера независимо от входа
- Однонаправленность — невозможно восстановить исходные данные из хэша
- Лавинный эффект — малейшее изменение входа полностью меняет хэш
- Устойчивость к коллизиям — сложно найти два разных входа с одинаковым хэшем
Пример
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 останется безопасным.
Сравнительная таблица
| Алгоритм | Длина | Безопасность | Применение |
|---|---|---|---|
| MD5 | 128 бит | ❌ Взломан | Контрольные суммы |
| SHA-1 | 160 бит | ⚠️ Устарел | Legacy, Git |
| SHA-256 | 256 бит | ✅ Надёжен | Стандарт |
| SHA-512 | 512 бит | ✅ Надёжен | Высокая безопасность |
| SHA-3 | 256+ бит | ✅ Надёжен | Альтернатива SHA-2 |
Где применяются хэши
1. Хранение паролей
Пароли никогда не хранятся в открытом виде. Хранится хэш:
password = "secret123"
stored = SHA256(password + salt)
// При входе: SHA256(введённый + salt) == stored? Для паролей используйте специализированные алгоритмы: bcrypt, Argon2, scrypt. Они специально медленные, что защищает от перебора.
2. Проверка целостности файлов
Скачали ISO-образ? Проверьте хэш:
sha256sum ubuntu.iso
# Сравните с хэшем на официальном сайте Если хэши совпадают — файл не повреждён и не подменён.
3. Цифровые подписи
Подписывается не весь документ, а его хэш:
- Вычисляется хэш документа
- Хэш шифруется приватным ключом → подпись
- Получатель расшифровывает подпись публичным ключом
- Сравнивает с хэшем полученного документа
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 (максимальная безопасность)
Вычисление происходит локально в браузере — ваши данные не передаются на сервер.