Base64, hex и ROT13: почему кодировка — это не шифрование

Криптография24.10.2026 09:00 · 1 мин чтения

Учимся узнавать популярные кодировки на глаз и разбираемся, чем кодирование отличается от шифрования и хеширования.

В CTF и в реальных системах постоянно встречаются странные строки вроде Q29kZUFyZW5h или 436f6465. Часто это вовсе не шифр, а кодировка — и прочитать её может любой.

Три разных вещи

  • Кодирование меняет представление данных, чтобы их было удобно передавать. Ключа нет, обратное преобразование знает каждый. Примеры: Base64, hex, URL-кодирование.
  • Шифрование прячет данные: без ключа их не прочитать. Примеры: AES, RSA.
  • Хеширование — одностороннее преобразование: из хеша нельзя получить исходные данные, только проверить совпадение. Примеры: SHA-256, Argon2.
Если для обратного преобразования не нужен секретный ключ — это не защита, это упаковка.

Как узнать кодировку на глаз

  • Base64 — латиница обоих регистров, цифры, + и /, часто = или == в конце. Длина кратна 4. Пример: Q29kZUFyZW5h → CodeArena.
  • Hex — только 0-9 и a-f, чётная длина. Каждые два символа — один байт: 41 → A.
  • Base32 — заглавные буквы и цифры 2–7, часто много = в конце.
  • ROT13 — текст похож на слова, но буквы «не те»: Uryyb → Hello. Это сдвиг алфавита на 13, повторное применение возвращает исходный текст.
  • URL-кодирование — %20, %3D и подобные пары после знака процента.

Попробуйте декодировать

import base64, codecs
base64.b64decode("Q29kZUFyZW5h").decode()   # 'CodeArena'
bytes.fromhex("436f6465").decode()          # 'Code'
codecs.decode("Uryyb", "rot13")             # 'Hello'

Практика

Пройдите короткую серию: Base64, Hex-дамп, Base32, ROT13 и URL-кодирование. После неё такие строки будете узнавать с первого взгляда.