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