«AES_ctr128_encrypt» не был объявлен в этой области - PullRequest
2 голосов
/ 27 сентября 2019

Я тестирую это шифрование в режиме OpenSSL AES-128 CTR.

#include <openssl/aes.h>
#include <openssl/rand.h>
#include <stdio.h>
#include <string.h>
  • Eclipse
  • OpenSSL 1.1.1c (путь к включенным файлам добавлен вНастройки сборки Eclipse C / C ++

Я получил эту ошибку (сборка в C ++):

../src/AES_OpenSSL_CTR.cpp:128:3: error: ‘AES_ctr128_encrypt’ was not declared in this scope.

Я включил openssl / aes.h уже.AES_ctr128_encrypt удален из OpenSSL 1.1.1.c?Почему до сих пор не объявлено?

1 Ответ

4 голосов
/ 27 сентября 2019

.. / 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.

...