Почему нельзя расшифровать хеш и как это работает

Содержание
- Что такое хеш-функция
- Простая аналогия: мясорубка
- Почему нельзя развернуть хеш обратно
- Но ведь у меня есть формула!
- Математически: почему это невозможно
- Почему тогда MD5 "дешифруется" на сайтах?
- Почему MD5, SHA1 и даже SHA256 — не надёжны для паролей
- Вывод
- Заключение
"Я же знаю, как работает хеш-функция. Почему бы просто не взять формулу и не развернуть хеш обратно?"
Ответ: потому что хеш — это мясорубка.
Что такое хеш-функция
Хеш-функция — это алгоритм, который:
- Принимает на вход данные любой длины (например, строку
admin
) - Возвращает строго фиксированный результат (например, 128 бит для MD5, 256 бит для SHA256)
- Делает это так, что:
- Один и тот же вход всегда даёт один и тот же выход
- Невозможно восстановить вход по хешу (в теории)
Простая аналогия: мясорубка
Представь:
Ты кладёшь в мясорубку слово "admin"
и получаешь вот это:
21232f297a57a5a743894a0e4a801fc3 ← это MD5("admin")
Теперь у тебя на руках фарш, а не мясо.
Ты знаешь, как работает мясорубка. Ты видел, что туда засунули "admin"
.
Но если у тебя только результат — фарш, то:
Обратно собрать "admin" из фарша — невозможно.
Вот это и есть суть хеширования. Оно необратимо по дизайну.
Почему нельзя развернуть хеш обратно
Хеш-функции вроде MD5, SHA1, SHA256 устроены так, чтобы:
- Сильно перемешивать входные данные
- Терять при этом часть информации
- Сжимать данные до фиксированного размера
Пример:
sha256("admin") → 8c6976e5b5410415bde908bd4dee15df
А теперь подумай: как узнать, что именно дало такой результат?
Может, это "admin"
? А может, "ADMIN"
? Или "admin "
(с пробелом)?
Увы, никак. Хеш-функция "забыла" об этом. Всё, что у тебя осталось — фарш.
Но ведь у меня есть формула!
Да, ты знаешь, как работает SHA256. Алгоритм полностью публичный.
Но! Это не простое уравнение. Это:
- Разбиение на блоки
- 64 раунда битовых операций: XOR, AND, ROTR, битовые сдвиги, суммирование и усечения
- Потеря информации на каждом этапе
Это как математическая мясорубка: даже если ты знаешь все шаги, обратной формулы не существует. Это не f(x) = x + 5
, где можно выразить x
.
Математически: почему это невозможно
Хеш-функция работает по принципу:
f: {0,1}^∞ → {0,1}^n
Она берёт бесконечное множество входов и отображает их в конечное множество выходов (например, 2^256).
Это значит:
- Огромное количество разных строк дают одинаковый результат
- Хеш — это не сжатие, а сильное сжатие с потерей данных
- Вернуть оригинал невозможно
Почему тогда MD5 "дешифруется" на сайтах?
Ты вставляешь:
5f4dcc3b5aa765d61d8327deb882cf99
А они выдают:
"password"
Это не магия. У них просто есть огромные базы данных:
"password" → 5f4dcc3b5aa765d61d8327deb882cf99
"admin" → 21232f297a57a5a743894a0e4a801fc3
"123456" → e10adc3949ba59abbe56e057f20f883e
И они сравнивают твой хеш с базой.
То есть это не дешифровка, а поиск совпадения.
Почему MD5, SHA1 и даже SHA256 — не надёжны для паролей
- Все они быстрые: легко брутфорсить
- Нет встроенной защиты от перебора
- Нет соли (если ты сам её не добавляешь)
- Есть коллизии (особенно в MD5 и SHA1)
Поэтому для паролей используют специальные хеш-функции:
Название | Преимущества |
---|---|
bcrypt |
Медленный, с солью |
argon2 |
Победитель Password Hashing Competition |
pbkdf2 |
Поддерживается в старых системах |
Вывод
Вопрос | Ответ |
---|---|
Можно ли расшифровать MD5 или SHA256? | Нет, это невозможно — алгоритм необратим |
Почему сайты "дешифруют" хеши? | Они просто сравнивают с базой популярных строк |
Почему нельзя развернуть формулу назад? | Потому что при хешировании информация теряется |
Что использовать для паролей? | bcrypt , argon2 , pbkdf2 |
Заключение
Хеш-функции — это не шифрование. Это мясорубка, из которой не выбраться назад.
Ты можешь знать, как устроена мясорубка, но собрать "admin" из фарша ты не сможешь.
Если хочешь использовать хеши для безопасности — используй правильные инструменты.
🛡️ SecureFlow.ru — понятно о безопасности, хакерстве и системном администрировании.
Подписывайся на Telegram и следи за новыми статьями.