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

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

Постер статьи

Содержание

"Я же знаю, как работает хеш-функция. Почему бы просто не взять формулу и не развернуть хеш обратно?"
Ответ: потому что хеш — это мясорубка.

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

Хеш-функция — это алгоритм, который:

  • Принимает на вход данные любой длины (например, строку admin)
  • Возвращает строго фиксированный результат (например, 128 бит для MD5, 256 бит для SHA256)
  • Делает это так, что:
    • Один и тот же вход всегда даёт один и тот же выход
    • Невозможно восстановить вход по хешу (в теории)

Простая аналогия: мясорубка

Представь:
Ты кладёшь в мясорубку слово "admin" и получаешь вот это:

21232f297a57a5a743894a0e4a801fc3  ← это MD5("admin")

Теперь у тебя на руках фарш, а не мясо.
Ты знаешь, как работает мясорубка. Ты видел, что туда засунули "admin".
Но если у тебя только результат — фарш, то:

Обратно собрать "admin" из фарша — невозможно.

Вот это и есть суть хеширования. Оно необратимо по дизайну.

Почему нельзя развернуть хеш обратно

Хеш-функции вроде MD5, SHA1, SHA256 устроены так, чтобы:

  1. Сильно перемешивать входные данные
  2. Терять при этом часть информации
  3. Сжимать данные до фиксированного размера

Пример:

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 и следи за новыми статьями.