2013-01-11 49 views
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不影響結果。

我真的不知道爲什麼它不起作用。 如果您有任何想法,提示或形而下例子,這將是一個很大的幫助

問候

回答

1

的問題就解決了。該方案所提供的AAD是錯誤的