Расшифровка файлов AES-GCM с помощью openssl

В настоящее время я пытаюсь расшифровать данный текст с помощью openssl. Я попытался создать свой собственный код, используя приведенный там пример: Поздняя аутентификация в расшифровке OpenSSL GCM но в итоге у меня все еще плохой результат. Моя функция расшифровки выглядит следующим образом:

void aes_decrypt(EVP_CIPHER_CTX ctx, unsigned char *pCipherText,
    int pCipherTextLen, int AADLen, unsigned char* pKey, unsigned char* pIv,
    unsigned char* pMac, int MacLen) {
int bytesProcessed = 12;
int dec_success;

}
unsigned char * pOut = malloc(pCipherTextLen);
unsigned char * pAAD = malloc(AADLen);
unsigned char * pClearText = malloc(pCipherTextLen);

// setting cipher, key and iv
EVP_DecryptInit(&ctx, EVP_aes_256_gcm(), pKey, pIv);
// setting tag
EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_IVLEN, 24, NULL);
EVP_CIPHER_CTX_ctrl(&ctx, EVP_CTRL_GCM_SET_TAG, 16, pMac);
// adding Additional Authenticated Data (AAD)
EVP_DecryptUpdate(&ctx, NULL, &bytesProcessed, pAAD, AADLen);
// decrypting data
EVP_DecryptUpdate(&ctx, pClearText, &bytesProcessed, pCipherText,
        pCipherTextLen);
// authentication step
dec_success = EVP_DecryptFinal(&ctx, pOut, &bytesProcessed);
free(pOut);
free(pMac);
free(pAAD);
free(pClearText);
}

Все данные, кроме AAD, предоставляются ранее путем чтения текстовых файлов (у меня есть список зашифрованных данных, используемый ключ/Ivs, MAC и результат, ожидаемый после расшифровки). После нескольких экспериментов возникают следующие проблемы: - результат отличается от ожидаемого - изменение MAC-адреса не влияет на результат (открытый текст) - подавление AAD не влияет на результаты.

Я действительно не знаю, почему это не работает. Если у вас есть идея, советы или конкретный пример, это будет большой помощью

С наилучшими пожеланиями


person user1970271    schedule 11.01.2013    source источник


Ответы (1)


Проблема решена. AAD, предоставленный программой, был неправильным

person user1970271    schedule 14.01.2013