Невозможно установить IV для AES GCM с помощью OpenSSL

Я пытаюсь использовать механизм шифрования AES GCM, предоставляемый OpenSSL в C ++, и использую пример по этой ссылке в качестве ссылки:
https://wiki.openssl.org/index.php/EVP_Authenticated_Encryption_and_Decryption

Однако следующее утверждение дает мне ошибку:

/* Set IV length if default 12 bytes (96 bits) is not appropriate */
if(1 != EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, 16, NULL))
handleErrors();

Я получаю ошибку:

ошибка: «EVP_CTRL_GCM_SET_IVLEN’ не была объявлена ​​в этой области ».

Я не понимаю, почему я не могу установить IVLEN в 16 байтов? я не хочу
используйте значение по умолчанию 12 байтов. Любые указатели будут отличными.

-1

Решение

Я решил ошибку. На самом деле, в примере кода порядок инициализации операции шифрования и установки длины IV следующий:

* Initialise the encryption operation. */
if(1 != EVP_EncryptInit_ex(ctx, EVP_aes_256_gcm(), NULL, NULL, NULL))
handleErrors();

/* Set IV length if default 12 bytes (96 bits) is not appropriate */
if(1 != EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, 16, NULL))
handleErrors();

У меня был обратный порядок для этих утверждений, то есть сначала установка длины IV, а затем инициализация операции шифрования. Я думал, это были независимые шаги, и порядок не имел значения. Но, возможно, интерфейсу нужно знать, какой механизм шифрования он использует, прежде чем устанавливать какие-либо параметры.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]