Хеш-функция превращает данные любой длины в строку фиксированного размера. На практике хеши используют для проверки целостности файлов, цифровых подписей, блокчейна и хранения паролей. Но SHA-256, SHA-3 и bcrypt решают разные задачи — путать их нельзя.
SHA-256
Это криптографическая хеш-функция из семейства SHA-2. Выдаёт 256-битный хеш и широко применяется в:
- TLS-сертификатах
- проверке целостности файлов
- электронных подписях
- блокчейн-системах
Плюсы:
- высокая скорость
- хорошая изученность
- широкая поддержка в инструментах и библиотеках
Важно: SHA-256 не подходит для хранения паролей в чистом виде. Причина в том, что он слишком быстрый. Современные видеокарты могут перебирать огромные объёмы хешей, что упрощает brute force и dictionary attack.
SHA-3
Это более новое семейство стандартов, основанное не на конструкции Merkle–Damgård, как SHA-2, а на Keccak. SHA-3 создавался как альтернативный стандарт на случай появления уязвимостей в SHA-2.
Где полезен SHA-3:
- системы с повышенными требованиями к криптографической устойчивости
- новые протоколы и специализированные решения
- среды, где важна архитектурная независимость от SHA-2
Что важно понимать:
- SHA-3 не “лучше во всём”, чем SHA-256
- в большинстве прикладных задач SHA-256 остаётся нормальным выбором
- для паролей SHA-3 тоже не лучший вариант, если использовать его напрямую
bcrypt
Это не просто хеш-функция для целостности, а алгоритм хеширования паролей с защитой от перебора. Его ключевая идея — быть медленным и настраиваемым по стоимости вычислений.
Почему bcrypt подходит для паролей:
- использует соль автоматически
- позволяет задавать cost factor
- замедляет массовый перебор
- намного безопаснее, чем SHA-256/SHA-3 без специальных схем
Но есть нюансы:
- bcrypt ограничен по длине входа
- сегодня для новых систем часто также рассматривают Argon2 как современный стандарт
- при неправильной настройке cost защита может быть слабой
📌 Что выбрать на практике?
- Для проверки целостности файлов — SHA-256
- Для альтернативных криптографических схем и новых решений — SHA-3
- Для хранения паролей — bcrypt
- Для новых password-based систем — стоит смотреть и в сторону Argon2
❗ Главная ошибка разработчиков — хранить пароли как `SHA-256(password)` или `SHA-3(password)`. Даже с солью это часто уступает специализированным password hashing algorithm.
Итог простой:
SHA-256 и SHA-3 — для криптографического хеширования данных. bcrypt — для паролей. Понимание этой разницы напрямую влияет на безопасность продукта 🛡️
Подборка каналов про IT — хороший способ следить за практикой безопасности, архитектурой и современными инструментами разработки 📚