关于OpenSSL的EVP_DecryptFinal_ex函数len归零及崩溃问题咨询
OpenSSL EVP_DecryptFinal_ex 解密问题求助
我在使用OpenSSL库进行加解密操作时,调用EVP_DecryptFinal_ex函数前后打印len变量的值,发现函数调用后len变为0。相关代码如下:
其中dctx是EVP_CIPHER_CTX类型指针,plaintext是unsigned char类型指针,len为解密文本的长度。
if (!EVP_DecryptFinal_ex(dctx, plaintext+len , &len)) { unsigned long err = ERR_get_error(); char *error_string = ERR_error_string(err?err:EVP_R_BAD_DECRYPT, NULL); *errMsg= " Data is Tempered or currupted: " ; cout<<"comes here:6 "<<error_string <<"Bad Decryption: data tempered or currupted"<<endl; EVP_CIPHER_CTX_free(dctx); delete[] plaintext; return ""; }else{ cout<<"clear till 7: "<<endl; cout<<" length value in CP9 final = "<< len<<endl; }
奇怪的是,固定长度的内容可以正常解密,但当长度变化时,程序会触发如下访问违例错误:
First chance exception at $009F06ED. Exception class $C0000005 with message 'access violation at 0x009f06ed: write of address 0x015d30a4'. Process TestDllProj.exe (892)
我已检查所有创建的指针,并释放了已分配的内存。请问上述代码块是否存在问题?恳请@RemyLebeau及各位提供解决方案。
内容的提问来源于stack exchange,提问作者yash
相关产品推荐
相关产品推荐

