Инструмент шифрования AES (AES-128/192/256)

Шифруйте текст AES-128/192/256 в режимах CBC, GCM, CTR, CFB, OFB и ECB. Парольная фраза в формате OpenSSL или сырой ключ и IV в hex. Работает в браузере.

Результат — формат OpenSSL «Salted__» в Base64: случайная соль из 8 байт, затем шифротекст. Ключ и IV выводятся из парольной фразы и соли, поэтому один и тот же текст каждый раз шифруется по-разному. Эквивалентная команда:

openssl enc -aes-256-cbc -md md5 -a -A -k '…'

Работает полностью в вашем браузере. Ваши данные никуда не загружаются.

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

Шифрует текст или hex-данные алгоритмом AES — стандартным блочным шифром (FIPS 197). Ключ можно получить из парольной фразы в формате OpenSSL «Salted__», и тогда результат расшифруют openssl enc и CryptoJS, либо задать сырой ключ и IV в hex для совместимости с кодом. Поддерживаются режимы CBC, CFB, CTR, OFB, ECB и GCM с аутентификацией.

Как пользоваться Шифрование AES

  1. Оставьте Источник ключа равным Парольная фраза (совместимо с OpenSSL) и введите Парольная фраза либо переключитесь на Сырой ключ + IV (hex) и введите точные ключ и IV в hex.
  2. Выберите Режим и Дополнение (CBC с PKCS#7 — значение по умолчанию в OpenSSL); для сырых ключей доступен также GCM с необязательными дополнительными аутентифицируемыми данными.
  3. Введите или вставьте Открытый текст (или переключите кодировку ввода на Hex для двоичных данных).
  4. Нажмите Зашифровать, выберите Base64 или Hex в поле Кодировка результата и скопируйте шифротекст.

Пример

Ввод
Key 2b7e151628aed2a6abf7158809cf4f3c, IV 000102030405060708090a0b0c0d0e0f, mode CBC, padding None, hex plaintext 6bc1bee22e409f96e93d7e117393172a
Вывод
7649abac8119b246cee98e9b12e9197d

Тестовый вектор NIST SP 800-38A F.2.1, кодировка результата Hex.

Когда использовать Шифрование AES

Используйте для получения тестовых данных приложения с AES, для шифрования фрагмента, который вы расшифруете через OpenSSL или CryptoJS, или чтобы понять, как режимы и дополнение влияют на результат. Для реальных данных выбирайте GCM (или CBC плюс отдельный MAC), потому что CBC/CTR/CFB/OFB сами по себе не обнаруживают подмену. Избегайте ECB: одинаковые блоки дают одинаковый шифротекст. Для файлов и долговременных секретов применяйте специальные средства — age, GnuPG или шифрование на уровне платформы.

Как работает Шифрование AES

AES шифрует 16-байтовые блоки ключом в 128, 192 или 256 бит (10, 12 или 14 раундов). В режиме парольной фразы генерируется случайная соль из 8 байт, а ключ и IV выводятся через EVP_BytesToKey из OpenSSL (MD5, одна итерация — значение по умолчанию для openssl enc -md md5 и CryptoJS) или через PBKDF2-HMAC-SHA256 (openssl enc -pbkdf2); результат — Base64 от Salted__ + соль + шифротекст. В сыром режиме ваши ключ и IV в hex используются напрямую, а возвращается только шифротекст. CBC и ECB применяют дополнение PKCS#7 (либо нулевое или без дополнения); CFB, OFB и CTR — потоковые режимы без дополнения. GCM использует Web Crypto API браузера с 12-байтовым nonce и добавляет 16-байтовый тег аутентификации. Реализация проходит тестовые векторы NIST SP 800-38A и GCM.

Распространенные Случаи Использования

  • Получить шифротекст, совместимый с openssl enc -aes-256-cbc, без терминала
  • Воспроизвести результат CryptoJS.AES.encrypt(text, passphrase) при отладке
  • Сгенерировать тестовые векторы AES-GCM (шифротекст + тег) для серверной реализации
  • Зашифровать короткий секрет сырым 256-битным ключом и IV для вставки в конфигурационный файл
  • Показать, почему режим ECB выдаёт закономерности, в отличие от CBC или CTR

Примечание по Безопасности

Всё выполняется локально в вашем браузере, ничего не загружается. EVP_BytesToKey с MD5 — слабая и быстрая функция вывода ключа, оставленная ради совместимости; для важных данных выбирайте PBKDF2 с большим числом итераций или случайный сырой ключ. Шифрование без аутентификации (CBC, CTR, CFB, OFB) не обнаруживает изменений.

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

Совместим ли результат с OpenSSL?

Да. В режиме парольной фразы результат совпадает с выводом openssl enc -aes-256-cbc -md md5 -a -A -k <passphrase> (EVP_BytesToKey с MD5) или -pbkdf2 -iter N, если выбран PBKDF2-HMAC-SHA256. Для расшифровки добавьте -d. Подходящая команда показана под полем парольной фразы.

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

В режиме парольной фразы при каждом шифровании берётся новая случайная соль, поэтому ключ, IV и шифротекст меняются. Так и задумано: любой из результатов расшифровывается той же парольной фразой. Режим сырого ключа детерминирован для одинаковых ключа, IV и входных данных.

Какой режим выбрать?

GCM, потому что он ещё и аутентифицирует данные (расшифровка не удастся, если что-то изменено). Если принимающая сторона поддерживает только openssl enc, используйте CBC: openssl enc не умеет GCM. Никогда не используйте повторно nonce GCM или счётчик CTR с тем же ключом.

Чем отличаются парольная фраза и сырой ключ?

Парольная фраза превращается в ключ функцией вывода ключа с солью, которая сохраняется в результате. Сырой ключ используется ровно как введён (16, 24 или 32 байта для AES-128/192/256) вместе с IV, который нужно передать отдельно.

Другие категории