ToolActToolAct

Шифратор/Дешифратор AES

Профессиональное AES шифрование с 6 режимами и 5 вариантами заполнения

Настройки Шифрования

Ввод
Символов: 0
Байт: 0
Результат
Символов: 0
Байт: 0

Что такое AES Шифрование?

AES (Advanced Encryption Standard) — наиболее широко используемый алгоритм симметричного шифрования в мире, одобренный NSA для защиты информации уровня TOP SECRET. AES был разработан на основе шифра Rijndael бельгийскими криптографами Joan Daemen и Vincent Rijmen и официально опубликован NIST в 2001 году как замена устаревшего DES. AES использует блочное шифрование с фиксированным размером блока 128 бит (16 байт) и поддерживает три длины ключа: 128, 192 и 256 бит. Более длинные ключи обеспечивают более высокую безопасность, но несколько меньшую скорость. Как симметричный алгоритм, AES использует один и тот же ключ для шифрования и дешифрования. AES имеет широкое применение: TLS/SSL для веба и электронной почты, BitLocker/FileVault для шифрования дисков, шифрование баз данных и безопасность IoT. Этот инструмент поддерживает все 6 режимов AES (ECB, CBC, CFB, OFB, CTR, GCM) и 5 схем заполнения.

Как использовать

Как использовать

  1. Выберите режим шифрования (GCM рекомендуется для шифрования с проверкой целостности)
  2. Выберите схему дополнения (режимы GCM/CFB/OFB/CTR автоматически работают без дополнения)
  3. Выберите длину ключа (256 бит для максимальной безопасности, 128 бит для лучшей производительности)
  4. Введите ключ или нажмите «Сгенерировать случайный ключ», чтобы создать его автоматически
  5. Для режимов, требующих IV, введите или сгенерируйте вектор инициализации
  6. Введите открытый текст (для шифрования) или шифротекст (для расшифровки) в левой панели
  7. Результаты появятся автоматически в правой панели
  8. Нажмите «Копировать», чтобы скопировать результат, или «Поменять местами», чтобы обменять вход и выход

Режимы шифрования

  • GCMРежим Галуа/счётчика (GCM), рекомендуется. Обеспечивает шифрование и аутентификацию, не требует дополнения, поддерживает параллельную обработку, идеален для передачи данных по сети и TLS
  • CBCСцепление блоков шифротекста (CBC), классический режим. Каждый блок открытого текста XOR-ится с предыдущим блоком шифротекста перед шифрованием, требует дополнения и IV, хорошая безопасность, но параллелизм не поддерживается
  • CFBРежим обратной связи по шифротексту (CFB), поточный режим. Преобразует блочный шифр в поточный, не требует дополнения, подходит для потоковых данных, поддерживает шифрование в реальном времени
  • OFBРежим обратной связи по выходу (OFB), похож на CFB, но ошибки не распространяются, подходит для зашумлённых каналов, дополнение не требуется
  • CTRРежим счётчика (CTR). Для генерации ключевого потока использует инкрементируемый счётчик, не требует дополнения, поддерживает полностью параллельное шифрование, высокая производительность
  • ECBЭлектронная кодовая книга (ECB), НЕ рекомендуется. Одинаковый открытый текст даёт одинаковый шифротекст, раскрывает шаблоны данных, подходит только для шифрования единичных блоков

Схемы дополнения

  • PKCS7Дополнение PKCS#7, самое распространённое и рекомендуемое. Добавляет N байтов со значением N, точно снимается при расшифровке, однозначно идентифицируется
  • ZeroPaddingДополнение нулями. Заполняет байтами 0x00, простое, но может вызвать неоднозначность, если данные естественно заканчиваются нулевыми байтами
  • NoPaddingБез дополнения. Требует, чтобы длина данных была кратна 16 байтам, подходит для поточных режимов или данных с известной длиной
  • ISO7859Дополнение ISO/IEC 7816-4. Первый байт дополнения — 0x80, далее следуют байты 0x00, широко применяется в смарт-картах и финансовой отрасли
  • ANSIX923Дополнение ANSI X.923. Все байты дополнения — 0x00, последний байт указывает длину дополнения, часто используется при обмене финансовыми данными

Полезные советы

  • Генерируйте ключи с помощью криптографически стойких случайных чисел, избегайте легко угадываемых строк
  • Используйте новый случайный IV для каждого шифрования, никогда не используйте IV повторно
  • Для режима GCM рекомендуется IV длиной 12 байт (96 бит) — оптимальный баланс производительности и безопасности
  • Режимы CTR и GCM поддерживают параллельную обработку и ускоряют шифрование больших объёмов данных
  • Ключи и IV можно вводить в шестнадцатеричном, текстовом или Base64 формате
  • Длины hex-ключей: 128 бит = 32 символа, 192 бит = 48 символов, 256 бит = 64 символа

Применение

Точное воспроизведение AES-интеграцииКогда другая система задаёт конкретную комбинацию — например AES-256-CBC с PKCS#7, hex-ключом, Base64-IV и Base64-шифротекстом, — используйте эту страницу. Отдельные управления ключом, IV, входом и форматом вывода позволяют воспроизвести точное соглашение без написания тестового кода. Каждая операция — SubBytes, ShiftRows, MixColumns, AddRoundKey — выполняется локально в браузере через aes-js, поэтому шифротекст не покидает браузер, а ключ остаётся только на вкладке.
Сравнение режимов и схем заполнения перед выборомПереключайтесь между ECB, CBC, CFB, OFB, CTR и GCM, а затем пробуйте PKCS#7, ZeroPadding, NoPadding, ISO/IEC 7816-4 или ANSI X.923 там, где заполнение применимо. Это наглядно показывает компромиссы между режимами — включая то, почему потоковые режимы (CFB, OFB, CTR) не требуют заполнения и почему ECB раскрывает шаблоны данных. 16-байтный IV для CBC и рекомендуемый 12-байтный IV для GCM можно проверить на одном и том же открытом тексте.
Генерация безопасных примеров для документацииСоздайте случайные ключи и IV в нужном формате, зашифруйте безобидный текст и скопируйте результат в hex или Base64 для примеров в README, API-тикетах или кросязычных тестовых векторах. Поскольку ключ и открытый текст остаются во вкладке браузера, можно собирать реалистичные примеры без отправки данных на удалённый сервер.
Диагностика расхождений с выводом другой библиотекиКогда Node crypto, Python pycryptodome или Java javax.crypto генерирует шифротекст, который не расшифровывается на странице, подберите режим и заполнение по спецификации, затем проверьте длину IV, длину ключа и кодировку ввода, прежде чем менять код приложения. Типичные причины: AES-CBC с PKCS#7 вместо ZeroPadding, или AES-GCM, где принимающая сторона ожидает 16-байтный тег аутентификации после IV+шифротекста, а не отдельно.
Демонстрация обработки тега аутентификации GCMЗашифруйте данные в режиме GCM, захватите 16-байтный тег аутентификации, который страница добавляет после шифротекста, и убедитесь, что принимающая сторона отклоняет шифротекст при усечённом или переставленном теге. Ошибки обработки тега обычно проявляются как молчаливая расшифровка, а не исключение, поэтому проверка поведения AEAD здесь позволяет обнаружить их до попытки интеграции.

Технический принцип

AES (Advanced Encryption Standard) был опубликован NIST как FIPS 197 в ноябре 2001 года после пятилетнего открытого конкурса, начавшегося в 1997 году с 15 кандидатами. Победителем стал Rijndael, разработанный бельгийскими криптографами Joan Daemen и Vincent Rijmen, обошедший финалистов Twofish, Serpent, RC6 и Mars. AES заменил DES (FIPS 46, выведен из обращения в 2005 году) и на сегодня является самым широко развёрнутым симметричным блочным шифром: он используется в TLS 1.2/1.3, IPsec, BitLocker, FileVault, настройке OpenSSL по умолчанию `aes-256-gcm`, модуле ядра Linux dm-crypt, Apple CryptoKit и Android Keystore. В 2003 году NSA одобрил AES-256 для защиты информации уровня TOP SECRET (набор A), что сделало AES первым публично доступным шифром, допущенным к высшему уровню секретности в США. Размер блока фиксирован на 128 бит (16 байт); длина ключа составляет 128, 192 или 256 бит, что соответствует 10, 12 или 14 раундам. Каждый раунд (кроме последнего) выполняет четыре операции над состоянием 4x4 байт: SubBytes применяет фиксированную S-Box 16x16 (0x63 = 01100011 находится в строке 6, столбце 3 — S-Box построена как мультипликативный обратный элемент в GF(2^8) плюс аффинное преобразование для разрушения алгебраической структуры); ShiftRows сдвигает строку 0 на 0, строку 1 на 1, строку 2 на 2, строку 3 на 3 байта; MixColumns умножает каждый столбец на фиксированную циркулянтную MDS-матрицу над GF(2^8) (полином 0x03 * x в матричной форме); AddRoundKey выполняет XOR с раундовым подключом. Последний раунд пропускает MixColumns. Раундовые ключи получаются из расписания ключей Rijndael: 11/13/15 раундовых ключей по 128 бит каждый, генерируемых с помощью RotWord (циклический сдвиг влево на 1 байт), SubWord (применение S-Box) и XOR с Rcon[i] = [0x01, 0x02, 0x04, ..., 0x80, 0x1b, 0x36] *2^(i-1) над GF(2^8). Библиотека `aes-js` на странице выполняет все четыре шага на чистом JavaScript и побайтово совместима с libcrypto из OpenSSL. Представлены пять режимов блочного шифрования. ECB шифрует каждый 16-байтный блок независимо: одинаковые блоки открытого текста дают одинаковые блоки шифротекста, раскрывая структуру (знаменитое изображение «пингвина ECB» сохраняет силуэт после шифрования, поскольку пиксельный шаблон сохраняется). CBC выполняет XOR каждого блока открытого текста с предыдущим блоком шифротекста перед шифрованием; первый блок XOR-ится с вектором инициализации. CTR превращает AES в поточный шифр, шифруя инкрементируемый счётчик (nonce || counter, обе половины по 64 бита от 128-битного блока) и выполняя XOR ключевого потока с открытым текстом — поддерживает произвольный доступ и параллельное шифрование. GCM — это CTR плюс GHASH (универсальный хеш-аутентификатор над GF(2^128)), формирующий 16-байтный тег аутентификации, добавляемый после шифротекста. GCM является AEAD по умолчанию в TLS 1.3 (RFC 8446) и в большинстве современных API (Node `crypto.createCipheriv('aes-256-gcm', ...)`). CFB и OFB — устаревшие поточные режимы, сохранённые для совместимости. Ловушка с IV — самая частая ошибка в продакшне. GCM с 96-битным (12-байтным) IV — рекомендуемая конфигурация NIST (RFC 5288, NIST SP 800-38D §5.2.1.1): 12-байтный IV рассматривается как счётчик, а GHASH вычисляется над J0 = IV || 0x00000001. Повторное использование IV с тем же ключом в режиме CTR раскрывает XOR открытых текстов (C1 XOR C2 = P1 XOR P2 — одна атака с выбранным открытым текстом восстанавливает оба сообщения). Повторное использование IV в GCM ещё хуже: атакующий может восстановить подключ аутентификации H и подделать теги для произвольных сообщений (атака описана в Joux 2006 и является причиной, по которой NIST запретил случайные 96-битные IV без строгой уникальности). Страница генерирует 12-байтные IV с помощью `crypto.getRandomValues(new Uint8Array(12))` для GCM и 16-байтные IV для CBC/CFB/OFB, а кнопка генерации случайного ключа использует тот же CSPRNG, поэтому каждое шифрование начинается со свежего материала. Этот инструмент выполняет шифрование и расшифровку AES целиком в браузере через aes-js (чистая JavaScript-реализация AES). Резервный путь через Web Crypto / SubtleCrypto отсутствует — независимо от размера данных все операции идут через aes-js.

  • AES — это FIPS 197 (2001), отобранный на открытом конкурсе NIST с 15 кандидатами; Rijndael обошёл Twofish, Serpent, RC6 и Mars. Размер блока всегда 128 бит; ключи 128/192/256 бит выполняют 10/12/14 раундов. Страница поддерживает все три варианта через конструкторы aes-js: AES_128, AES_192 и AES_256.
  • Четырёхшаговая раундовая функция: SubBytes (256-байтная S-Box — обратный элемент в GF(2^8) плюс аффинное преобразование), ShiftRows (строки сдвигаются на 0/1/2/3 байта), MixColumns (умножение на MDS-матрицу над GF(2^8) с полиномом 0x03), AddRoundKey (XOR с раундовым ключом). Последний раунд пропускает MixColumns. Один алгоритм, один ключ = один шифротекст — AES детерминирован.
  • ECB небезопасен, так как одинаковые блоки открытого текста дают одинаковые блоки шифротекста (знаменитое изображение «пингвина ECB» сохраняет силуэт). CBC — безопасная классика; CTR добавляет параллелизм; GCM добавляет аутентификацию и является режимом по умолчанию в TLS 1.3 (RFC 8446). CFB и OFB — поточные режимы, сохранённые для обратной совместимости.
  • Дополнение PKCS#7: не хватает 1 байта → 15 байтов 0x0f + 1 байт 0x10; не хватает 2 байтов → 14 байтов 0x0e + 2 байта 0x0f и т. д. Значение последнего байта — длина дополнения, поэтому снятие дополнения однозначно. Поточные режимы (CTR/CFB/OFB/GCM) полностью пропускают дополнение. ZeroPadding неоднозначно, если данные заканчиваются байтом 0x00 — не используйте его.
  • GCM — это AEAD: шифротекст плюс 16-байтный тег аутентификации, вычисляемый через GHASH над GF(2^128) с использованием H = AES_K(0^128). AAD (дополнительные аутентифицированные данные) покрывают заголовки без их шифрования. 96-битный IV (RFC 5288) рассматривается как счётчик; 128-битные IV проходят через GHASH для получения J0 — та же безопасность, чуть медленнее.
  • Повторное использование IV катастрофично. Повтор IV в режиме CTR раскрывает P1 XOR P2 (двукратное использование одноразового блокнота). Повтор IV в GCM (Joux 2006) позволяет атакующему восстановить H и подделать теги. Страница генерирует IV с помощью `crypto.getRandomValues` (CPRNG), никогда не повторяет их в рамках сессии и прикрепляет IV перед шифротекстом, чтобы принимающая сторона могла его извлечь без внесистемного состояния.
  • Генерация ключа AES: кнопка случайного ключа использует `crypto.getRandomValues` (CSPRNG браузера). Раунды AES вычисляются через aes-js — чистую JavaScript-реализацию, побайтно совместимую с libcrypto OpenSSL при одинаковых ключе, IV и схеме дополнения.
  • Реальность побочных каналов: AES на чистом JS не является константно-временным (индексация в массив S-Box утеает тайминг). AES в Web Crypto работает в нативном коде и является константно-временным. Для высоконагруженных задач (HSM, серверные KDF) предпочтительнее нативный путь; для обучающего инструмента в браузере aes-js подходит, поскольку входные данные уже находятся в памяти страницы. Путь миграции: SHA-1 → SHA-256 для хешей, DES → AES для шифров, ECB → GCM для режимов.

Примеры

Шифрование AES-128-CBC

Открытый текст: Hello, World!
Ключ:           0123456789abcdef0123456789abcdef (32 hex = 128 бит)
IV:             fedcba9876543210fedcba9876543210 (32 hex = 128 бит)
Режим:          CBC / PKCS#7 / 128 бит

Страница выводит шифртекст (Base64 и Hex) в панели результата.
Нажмите 'Копировать', чтобы получить значение, или 'Поменять',
чтобы расшифровать обратно. Дополнение PKCS#7 добавляет 3 байта
(0x03 0x03 0x03), чтобы дополненный открытый текст заполнил один
блок AES.

FIPS: FIPS 197 определяет AES; NIST SP 800-38A определяет режим CBC

Аутентифицированное шифрование AES-256-GCM

Открытый текст: sensitive data payload
Ключ:           6f8a3b2c1d9e7f5a4b8c0d2e1f3a5b7c9d1e3f5a7b9c1d3e5f7a9b1c3d5e7f9a (64 hex = 256 бит)
IV:             1a2b3c4d5e6f708192a3b4c5 (24 hex = 12 байт, рекомендуемая длина для GCM)
Режим:          GCM / без дополнения / 256 бит / AAD пустой

Формат вывода: IV (12B) || Шифртекст || AuthTag (16B)

FIPS: NIST SP 800-38D определяет режим GCM; 96-битный IV используется как счётчик

AES-128-ECB (тестовый вектор FIPS 197 Приложение B)

Ключ:           2b7e151628aed2a6abf7158809cf4f3c (128 бит)
Открытый текст: 3243f6a8885a308d313198a2e0370734
Шифртекст (Hex): 3925841d02dc09fbdc118597196a0b32

Режим:          ECB / 128 бит

Примечание: ECB шифрует каждый 16-байтовый блок независимо.
Одинаковые блоки открытого текста всегда дают одинаковые блоки
шифртекста.
FIPS: FIPS 197 Приложение B содержит этот канонический тестовый вектор

Сравнение безопасности режимов AES

ECB:  без IV, детерминированный, выявляет шаблоны - НИКОГДА не используйте в продакшене
CBC:  случайный IV, расшифрование параллельное, требуется HMAC для целостности
CTR:  IV-счётчик, параллельное шифрование/расшифрование, требуется MAC
GCM:  случайный IV, параллелизуемый, встроенный тег аутентификации

Для новых систем предпочтительнее AES-256-GCM:
- 256-битный ключ устойчив к квантовым атакам (алгоритм Гровера)
- GCM обеспечивает конфиденциальность и целостность за одну операцию
- TLS 1.3 требует AEAD-шифров, таких как AES-GCM

NIST: NIST SP 800-38A/D документируют все эти режимы

Часто задаваемые вопросы

Что такое AES и какие размеры ключей поддерживаются?

AES (Advanced Encryption Standard, FIPS 197) — симметричный шифр, на котором держится большая часть современного HTTPS, Wi-Fi WPA2 и шифрования дисков. Страница поддерживает ключи длиной 128, 192 и 256 бит. AES-128 быстр и безопасен почти для любых задач; AES-256 стоит выбирать только тогда, когда нужна долгосрочная устойчивость к будущему квантовому криптоанализу.

Какой режим выбрать — ECB, CBC, CFB, OFB, CTR или GCM?

ECB небезопасен для всего, кроме одноблочных тестовых векторов (он раскрывает паттерны данных). CBC и CTR обеспечивают только конфиденциальность и требуют отдельного MAC. GCM — современный выбор по умолчанию: он одновременно шифрует и аутентифицирует данные, и именно его использует HTTPS. Берите GCM, если только не нужна совместимость с устаревшей системой.

Какое дополнение (padding) использовать?

PKCS#7 (он же PKCS#5) — стандартное дополнение для режимов ECB и CBC. CTR, CFB, OFB и GCM работают как потоковые режимы и не требуют дополнения — там страница принудительно ставит «NoPadding». Если расшифровка падает с ошибкой «bad padding», чаще всего причина в несовпадении ключа, IV или настроек дополнения между двумя сторонами.

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

Все режимы, кроме ECB, используют IV (вектор инициализации), который должен быть случайным для каждого шифрования. Один и тот же открытый текст плюс один и тот же ключ плюс разный IV — разный шифротекст. IV не является секретом — его обычно дописывают к шифротексту, — но повторное использование IV с тем же ключом в режиме CTR или GCM катастрофично и ломает шифрование.

Устойчив ли AES к квантовым атакам?

Эффективная стойкость AES-128 на достаточно мощном квантовом компьютере падает примерно до 64 бит из-за алгоритма Гровера; у AES-256 она снижается до 128 бит. Поэтому AES-256 — консервативный выбор для данных, которые должны оставаться секретными десятилетиями. Симметричный AES страдает от квантовых атак гораздо меньше, чем RSA или ECC.

Происходит ли шифрование прямо в моём браузере?

Да. Страница использует библиотеку aes-js (чистая JavaScript-реализация AES), которая работает локально в браузере. Открытый текст, ключи и IV никогда не покидают устройство. Это легко проверить во вкладке Network в инструментах разработчика.

Как безопасно передать ключ?

Никогда не вставляйте боевой рабочий ключ ни на эту, ни на любую другую веб-страницу. Считайте этот инструмент учебным пособием и способом проверить тестовые векторы. Для реального обмена ключами используйте асимметричную схему (RSA-OAEP, ECDH/X25519), ключ, выводимый из пароля через PBKDF2 или Argon2 с солью, либо управляемую KMS — но не «отправь ключ в чате».

Связанные инструменты

Инструмент Шифрования и Дешифрования DES

Бесплатный онлайн-инструмент шифрования и дешифрования DES/3DES. Поддерживает режимы ECB и CBC с дополнением PKCS7. Вся обработка происходит в браузере.

Инструмент Шифрования и Дешифрования RSA

Бесплатный онлайн-инструмент RSA асимметричного шифрования. Генерация ключевых пар, шифрование открытым ключом, дешифрование закрытым ключом.

Генератор хэшей

Бесплатный онлайн-генератор хэшей: MD5, SHA-1, SHA-256 и SHA-512. Мгновенно вычисляйте хэш текста для проверки целостности данных и хранения паролей.

Генератор паролей

Бесплатный онлайн-генератор надёжных паролей с настраиваемой длиной и наборами символов. Создавайте случайные пароли локально в браузере.

Инструмент анализа JWT

Бесплатный онлайн-инструмент для декодирования и проверки JSON Web Token. Просматривайте Header и Payload и отлаживайте аутентификацию API в браузере.

Генератор JWT

Бесплатный онлайн-генератор JWT: создавайте токены с произвольными Header и Payload. Поддержка разных алгоритмов подписи для быстрых тестовых токенов.