4
我目前正試圖AES-GCM文件使用OpenSSL的解密給定文本。我試着用給那裏的例子,使我自己的代碼: Late authentication in OpenSSL GCM decryption 但我仍然有一個壞的結果而告終。我的解密函數是如下:解密使用OpenSSL的
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通過讀取TEXTFILES先前給出的(I有加密的數據的列表,鍵/ IVS中使用的,MAC和預期解密後的結果) 幾次試驗後,以下問題occures: - 結果是diferent比一個預期 - 修改MAC不影響結果(明文) - 抑制AAD不影響結果。
我真的不知道爲什麼它不起作用。 如果您有任何想法,提示或形而下例子,這將是一個很大的幫助
問候