Шифрование AES

Шифрует и расшифровывает AES. Односторонний отпечаток — это генератор хеша

Что шифрует эта страница

AES — блочный шифр. Страница считает его в браузере в ECB, CBC, CTR, OFB, CFB или GCM, ключ 16, 24 или 32 байта. Односторонний отпечаток пароля — на странице генератор хеша.

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

  1. Вставьте вход. Режим начинается с CBC, заполнение — с pkcs7padding, кодировка — с UTF-8.
  2. Формат ключа и IV начинается с текста. Вход — текст, выход — hex. ECB прячет IV. GCM показывает длину тега и AAD и фиксирует nopadding.
  3. Зашифровать шифрует. Расшифровать расшифровывает. Показать пример ставит hello, CBC, pkcs7padding, UTF-8, ключ 1234567890abcdef, IV 1234567890abcdef и hex 7e6347a62a0a976373e79b1bd586363d.
  4. Поменять копирует результат во вход и ставит формат входа равным только что полученному формату. Поставь формат выхода на Текст и нажми Расшифровать. Тот же ключ и IV снова дают hello.
  5. Очистить всё опустошает поля и возвращает CBC, pkcs7padding, UTF-8, текстовые форматы и вывод hex. Копировать результат копирует вывод.

Ключ, IV, заполнение и тег

Текст становится байтами по кодировке. hex и Base64 уже байты, кодировка к ним не применяется. Затем ключ должен быть 16, 24 или 32 байта: AES-128, AES-192 или AES-256. 1234567890abcdef в UTF-8 — это 16 байт.

CBC, CFB, OFB и CTR требуют IV в 16 байт. У ECB нет IV. GCM принимает любой непустой IV; обычная длина — 12 байт. pkcs5padding и pkcs7padding здесь одинаковы: добавляют от 1 до 16 байт до кратности 16. nopadding байты не меняет, поэтому ECB и CBC уже требуют эту кратность. GCM допускает только nopadding.

Тег GCM дописывается в конец шифртекста. Длина тега по умолчанию 128 бит. AAD проверяется и не шифруется. Расшифровка не принимает текстовый вход, шифрование не принимает текстовый выход. Неверный ключ, IV, тег или заполнение дают ошибку.

Где это нужно

  • Сверить CBC-шифртекст с другим инструментом AES.
  • Прочитать GCM, у которого тег стоит в конце hex.
  • Переключить ключ между текстом, hex и Base64.

Вопросы

Почему pkcs5 и pkcs7 здесь одинаковы?

Блок AES — 16 байт. Оба заполнения добивают последний блок одним и тем же байтом счётчика.

Один и тот же текст всегда даёт один hex?

Да, если режим, заполнение, ключ и IV не меняются. Показать пример даёт 7e6347a62a0a976373e79b1bd586363d.