///////////////// // Инструкция // /////////////// 1. Лабораторных работы должны быть выполнены на языке С++ 2. Исходный код должен содержать комментарии к каждой из функций с описанием входных и выходных параметров 3. Лабораторная работа должна содержать внятный ReadMe (код будет проверяться на MacOS High Sierra) 4. Можно пользоваться функциями библиотеки OpenSSL, Crypto++ /////////////////////////// // Лабораторная №3 ////// // Опубликована: 24.02 // //////////////////////// Задача: Зашифровать и дешифровать текстовый файло с помощью алгоритма AES. В OpenSSL можно использовать функцию EVP_aes_128_ctr(). Необходимо: 1. Сформировать инициализирующий вектор IV 2. сформировать AES ключ типа AES_KEY 3. Вызывать шифрующую функцию (например, EVP_aes_128_ctr() ), записать результат шифрования в файл 4. Дешифровать полученный на 3м шаге файл, сравнить с исходным. Для шагов 1, 2 использовать встроенный генератор псевдослучайных чисел (например, RAND_bytes()) Для тестирования шифрующей функции использовать текстовые вектора, данные на стр. 55 в https://nvlpubs.nist.gov/nistpubs/Legacy/SP/nistspecialpublication800-38a.pdf Объяснение некоторых шагов дано здесь https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption Делати реализации AES_ctr128_encrypt(): https://stackoverflow.com/questions/3141860/aes-ctr-256-encryption-mode-of-operation-on-openssl