Инструменты
Руководства

AES шифрование / расшифровка

Крипто

Симметричное шифрование AES-GCM с ключом PBKDF2, случайными salt и IV. По паролю.

100 % на клиенте Без бэкенда
Ввод
Вывод
На этой странице

Что такое симметричное шифрование?#

Симметричное шифрование использует один общий секрет и для запирания, и для отпирания. Вы даёте ему открытый текст и пароль — оно возвращает зашифрованный блоб, который никто не сможет прочитать без того же пароля. Это правильный инструмент, когда нужна конфиденциальность (скрыть, что именно говорится в данных), в отличие от хеша (только целостность) или HMAC (только аутентичность).

Страница использует AES-GCM — режим аутентифицированного шифрования, рекомендованный для нового кода. «Аутентифицированный» здесь ключевое слово: GCM не просто шифрует текст, он вплетает защиту от подмены. Если кто-то поменяет хотя бы один бит в шифротексте, расшифровка громко упадёт, а не молча вернёт мусор. Ключ выводится из вашего пароля через PBKDF2 поверх SHA-256, со свежей случайной солью и 100 000 итераций по умолчанию, поэтому даже умеренно слабый пароль дорого взламывать перебором офлайн.

Всё работает в браузере через Web Crypto. Сервера нет, эскроу ключей нет, сетевых вызовов нет — потеряете пароль, и шифротекст не восстановить, по замыслу.

Как пользоваться#

  1. Выберите режим: Зашифровать (открытый текст → шифротекст) или Расшифровать (шифротекст → открытый текст).
  2. Введите пароль. Это единый общий секрет; тот, кто позже расшифровывает, должен ввести ровно тот же.
  3. Задайте параметры:
    • Размер ключа — 128 / 192 / 256 (по умолчанию 256). 256 — современный базис; остальные нужны для совместимости с устаревшими системами.
    • Итерации — раунды PBKDF2, по умолчанию 100 000. Больше — медленнее офлайн-взлом, но и медленнее для вас; 100 000 сегодня разумный минимум.
    • Формат вывода — Base64 (компактнее, по умолчанию) или Hex.
  4. Вставьте входные данные в левую панель. Для шифрования — любой текст; для расшифровки — ранее скопированный блоб.
  5. Прочитайте вывод справа. Строка состояния сообщает, успешна ли операция; неверный пароль при расшифровке даёт чистый сбой, а не искажённый текст.

Ключевые возможности#

  • Аутентифицированное шифрование AES-GCM. Подмена шифротекста обнаруживается — изменённый блоб отказывает в расшифровке, а не выдаёт правдоподобный мусор.
  • Самоописанный выход. Соль, IV, размер ключа и число итераций упакованы в выходной блоб, поэтому для расшифровки нужен только пароль. Никогда не приходится запоминать или пересылать эти параметры отдельно.
  • Случайность на каждое сообщение. Новая случайная соль и новый 12-байтовый IV генерируются при каждом шифровании, поэтому дважды зашифрованный один и тот же текст даёт два совершенно разных блоба — и оба расшифровываются в тот же открытый текст.
  • Настраиваемый PBKDF2. Поднимите число итераций, чтобы укрепить слабый пароль против офлайн-атаки.
  • Без отправки данных. Шифрование и расшифровка локальны; пароль и открытый текст не покидают страницу.

Разбор примера#

Зашифруйте сообщение launch at dawn паролем correct-horse-battery-staple, размер ключа 256, итерации 100000, формат base64. Выход ниже — настоящий проверяемый блоб: вставьте его прямо в «Расшифровать» с тем же паролем, и вернётся launch at dawn:

AQEAAAGGoPVkwA9k0rjoWLw8GXnalIvQoBTP+awUg4DczQwTK5nxMwUaEaQ35WTQbWK8gLMkvuDf+/ndr04f8fw=

(Повторное шифрование того же текста даст другой блоб, потому что соль и IV каждый раз свежеслучайные.) Этот блоб — не просто шифротекст. Это маленький конверт с такой структурой:

version(1) | keyBits(2) | iterations(4) | salt(16) | IV(12) | ciphertext+tag

Переключитесь на Расшифровать, вставьте блоб выше обратно во вход, введите тот же пароль — и в правой панели вернётся launch at dawn. Теперь повторите расшифровку с чуть-чуть другим паролем — тег аутентификации GCM не пройдёт проверку, и строка состояния сообщит о сбое вместо полуискажённого текста. Этот чистый сбой — ровно то, что даёт аутентифицированное шифрование по сравнению со старым неаутентифицированным режимом CBC.

FAQ#

Что если я забуду пароль?#

Данные потеряны. PBKDF2 и AES спроектированы так, что пароль нельзя восстановить из блоба — нет пути «восстановления пароля», нет бэкдора, нет сервера, который мог бы его сбросить. Относитесь к паролю как к единой точке отказа и храните критические пароли в менеджере паролей.

Почему при шифровании одного и того же текста дважды получается разный выход?#

Потому что при каждом шифровании генерируется новая случайная соль и новый 12-байтовый IV. Это сделано намеренно: если бы одинаковый открытый текст всегда давал одинаковый шифротекст, атакующий мог бы узнавать повторяющиеся сообщения. На расшифровку эта случайность не влияет — соль и IV путешествуют внутри блоба и считываются автоматически.

Сколько итераций ставить?#

100 000 — разумный минимум для интерактивного использования. Если защищаете что-то ценное и готовы к короткому ожиданию, 600 000 ощутимо повышает цену атаки для злоумышленника и при этом не мучает вас. Цена платится один раз за каждое шифрование или расшифровку, а не за каждый байт данных.

Подходит ли это для больших файлов?#

Инструмент переваривает любой текст, который вы вставите, но это страница, а не потоковое файловое шифрование. Для очень больших payload’ов стандартный шаблон — гибридная схема (AES для данных, RSA или обёртка ключа для ключа AES), и AES-GCM — ровно та симметричная половина этого шаблона.