Хеш-функция превращает любой ввод — слово, файл, пароль — в короткую строку фиксированной длины. Один и тот же ввод всегда даёт один и тот же хеш, но обратно к исходнику его не развернуть. Ниже — зачем это нужно, при чём тут семейство SHA и бесплатный инструмент, чтобы захешировать любой текст самому.
Захешировать текст бесплатно →Что такое хеш на самом деле
Хеш — это отпечаток данных. Подайте на вход книгу в миллион слов или одну букву — хеш-функция вернёт значение фиксированной длины: SHA-256 всегда выдаёт 64 hex-символа независимо от размера входа. Он устроен так, чтобы быстро считаться в одну сторону и практически не разворачиваться обратно.
Три свойства, которые делают его полезным
У любой хорошей криптографической хеш-функции три черты:
- Детерминированность — один и тот же ввод всегда даёт один и тот же хеш
- Односторонность — из хеша нельзя восстановить исходный ввод
- Стойкость к коллизиям — практически невозможно найти два входа с одинаковым хешем
Измените один символ входа — и хеш меняется полностью. Это лавинный эффект, из-за него хеши хорошо ловят даже крошечные изменения данных.
Хеширование — это не шифрование
Именно здесь чаще всего путаются. Шифрование двустороннее: с ключом можно расшифровать обратно в исходник. Хеширование одностороннее — ключа нет и «расхешировать» нельзя. Поэтому хеш нужен, чтобы проверять данные, а не хранить то, что потом нужно прочитать.
Семейство SHA
SHA (Secure Hash Algorithm) — семейство стандартных хеш-функций. SHA-256, SHA-384 и SHA-512 входят в SHA-2 и сегодня являются выбором по умолчанию — число означает длину результата в битах. SHA-1 старше и считается слабым для защиты, поэтому относитесь к нему как к легаси: годится для несекьюрити-контрольной суммы, но не для того, что должно противостоять атакующим.
Где применяют хеширование
- Целостность файлов — публикуют контрольную сумму, чтобы проверить, что загрузка не изменена
- Хранение паролей — сайты хранят хеш, а не сам пароль (с солью, см. ниже)
- Цифровые подписи и сертификаты — данные хешируют, а затем подписывают хеш
- Дедупликация и быстрые сравнения — сравнивают короткие хеши вместо больших файлов
Зачем паролю нужна соль
Просто захешировать пароль недостаточно — атакующие заранее считают хеши популярных паролей (радужные таблицы) и мгновенно находят совпадение. Соль — это уникальное случайное значение, добавляемое к каждому паролю перед хешированием, поэтому одинаковые пароли дают разные хеши, а заранее посчитанные таблицы бесполезны. Настоящие системы хранения паролей используют медленную специализированную функцию — bcrypt или Argon2, а не быстрый обычный SHA.
Частые вопросы
Можно ли развернуть хеш обратно?+
Нет — хеширование одностороннее по замыслу. Догадку можно только проверить: захешировать и сравнить. «Расшифровщики хешей» — это просто базы заранее посчитанных хешей для популярных входов, а не настоящее обращение.
Какой SHA выбрать?+
Для всего, что связано с безопасностью, — SHA-256 или сильнее (SHA-384/512). SHA-1 — только для несекьюрити-контрольных сумм, и никогда там, где атакующий может попытаться подделать совпадение.
Безопасно ли хешировать текст на сайте?+
Само хеширование безопасно, но никогда не вставляйте реальные секреты и пароли в онлайн-инструменты. Наш генератор работает у вас в браузере, но безопасная привычка — хешировать только нечувствительный текст или тестовые данные.