.. / src / AES_OpenSSL_CTR.cpp: 128: 3: ошибка: «AES_ctr128_encrypt» не был объявлен в этой области
OpenSSL 1.1.1 и 1.1.0 предоставляют только AES_encrypt
.Это только программная реализация.Он работает на полных блоках.Вам необходимо управлять счетчиком, предоставлять приращения, шифровать счетчик и XOR в виде простого текста.
Вместо использования низкого уровня AES_encrypt
следует использовать интерфейсы EVP.Алгоритмы EVP используют аппаратное ускорение, когда доступно, и комбинируют шифры и режимы, такие как AES-128 / CTR.Функция, которую вы ищете: EVP_aes_128_ctr()
.Также см. Симметричное шифрование и дешифрование EVP на вики OpenSSL.
Если вы предоставите Минимальный, Полный и Проверяемый пример , тогда мы можем больше рассказать о том, что выМожно решить проблему.
Если вы хотите использовать AES_ctr128_encrypt
, вам нужно вернуться к OpenSSL 1.0.2.OpenSSL 1.1.1 и 1.1.0 больше не предоставляют его.
$ git checkout OpenSSL_1_0_2-stable
Branch 'OpenSSL_1_0_2-stable' set up to track remote branch 'OpenSSL_1_0_2-stable' from 'origin'.
Switched to a new branch 'OpenSSL_1_0_2-stable'
$ grep -IR AES_ctr128_encrypt
util/libeay.num:AES_ctr128_encrypt 3216 EXIST::FUNCTION:AES
crypto/aes/aes.h:void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
crypto/aes/aes_ctr.c:void AES_ctr128_encrypt(const unsigned char *in, unsigned char *out,
Если вы вернетесь к OpenSSL 1.0.2, то см. Режим работы AES CTR 256 Encryption на OpenSSL .
Поскольку у вас есть программа на C ++, вас может заинтересовать EVP Encryption ... |Программы на C ++ в OpenSSL вики.Он использует std::unique_ptr
и secure_string
для управления ресурсами OpenSSL.secure_string
- это std::basic_string
typedef с безопасным распределителем.Он прекрасно очищает код OpenSSL C.
Я тестирую шифрование в режиме OpenSSL AES-128 CTR ...
Да, так что этопроблема с блогами (не говоря уже о 2012 году).Вероятно, лучше всего следовать тому, что говорится в проекте.Проект OpenSSL говорит об использовании интерфейсов EVP.