Вопрос:

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

c++ encryption aes-gcm initialization-vector

446 просмотра

1 ответ

50 Репутация автора

Я пытаюсь использовать механизм шифрования 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 байтов. Любые указатели будут отличными.

Автор: Riddhi Rathod Источник Размещён: 22.08.2016 08:57

Ответы (1)


1 плюс

50 Репутация автора

Я исправил ошибку. На самом деле, в примере кода порядок инициализации операции шифрования и установки длины 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, а затем инициализация операции шифрования. Я думал, это были независимые шаги, и порядок не имел значения. Но, возможно, интерфейсу нужно знать, какой механизм шифрования он использует, прежде чем устанавливать какие-либо параметры.

Автор: Riddhi Rathod Размещён: 23.08.2016 01:43
Вопросы из категории :
32x32