/AES

Primary LanguageC

AES

AES (англ. Advanced Encryption Standard, также известный как Rijndael) — симметричный алгоритм блочного шифрования (размер блока 128 бит, ключ 128/192/256 бит), принятый в качестве стандарта шифрования правительством США по результатам конкурса AES.

Описание работы

SHA-256 – алгоритм шифрования хэш-функции из семейства SHA-2 (Secure Hash Algorithm, с англ. – Алгоритм безопасного хэширования). Приставка 256 обозначает размер вывода – 256 бит. Существуют и другие форматы: 224, 384 и 512.

PKCS7 - PKCS5Padding и PKCS7Padding являются методами заполнения ключа, когда длина ключа недостаточна. Метод заполнения PKCS5Padding заключается в заполнении нескольких нулей, когда длина ключа недостаточна. Для AES128, если ключ «1234567890», всего 10 битов и 6 битов отсутствуют. Ключ после заполнения PKCS5Padding равен « «1234567890000000», заполнено 6 нулей. Метод заполнения PKCS7Padding заключается в заполнении нескольких битов, когда длина ключа недостаточна, например, для AES128, если ключ «1234567890», всего 10 битов и 6 битов отсутствуют. Ключ после заполнения PKCS7Padding - «1234567890666666».

CBC - читать

BASE64 - читать

Алгоритм шифрования методом AES256:

  1. Читаем текст. В случае не крастности на 16, заполняем его при помощи метода PKCS7Padding
  2. Вычисляем hash при помощи алгоритма SHA256, от вводимого пользователем пароля
  3. Генерируем IV (initializing vector), для AES с режимом CBC и шифруем текст
  4. Переводим поулченный зашифрованный текст и вектор инициализации в стандарт кодирования Base64

Ссылки на конвекторы и прочее:

TEXT -> SHA256

TEXT -> BASE64

BASE64 -> HEX

HEX -> TEXT

AES


Компиляция

  • MAIN.CPP

В разработке

  • CONVERTER.CPP
.\output\converter.exe path
  • MAIN_IMAGE.CPP
.\output\main_image.exe { -e, -d } path { -cbc -ecb }

E - Зашифровать изображение

D - Расшифровать изображение

CBC - Cipher Block Chaining (режим сцепления блоков шифротекста)

EBC - Electronic Codebook (режим простой замены)