Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用公钥X509 V3(PKCS7)使用AES 128模式cbc加密文件_C++_C_Encryption_Cryptography - Fatal编程技术网

C++ 使用公钥X509 V3(PKCS7)使用AES 128模式cbc加密文件

C++ 使用公钥X509 V3(PKCS7)使用AES 128模式cbc加密文件,c++,c,encryption,cryptography,C++,C,Encryption,Cryptography,我需要用AES 128模式cbc加密文件。 AES的密钥需要使用公钥X509 V3进行加密。 所有这些都需要保存在二进制文件PKCS7中 BIO* certBIO = BIO_new_mem_buf((void*)&certData[0], certData.size()); if (certBIO) x509 = d2i_X509_bio(certBIO, 0); BIO_free(certBIO); sk_X509_push(x509_stack, x509); BIO*

我需要用AES 128模式cbc加密文件。 AES的密钥需要使用公钥X509 V3进行加密。 所有这些都需要保存在二进制文件PKCS7中

BIO* certBIO = BIO_new_mem_buf((void*)&certData[0], certData.size());
if (certBIO)
    x509 = d2i_X509_bio(certBIO, 0);
BIO_free(certBIO);

sk_X509_push(x509_stack, x509);

BIO* bio = BIO_new(BIO_s_mem());
BIO_write(bio, &inData[0], inData.size());
BIO_flush(bio);

PKCS7* pkcs7_encrypt = PKCS7_encrypt(x509_stack, bio, EVP_aes_128_cbc(), PKCS7_BINARY);

FILE *fpPKCS7 = fopen(szPKCS7File, "wb");
if (!fpPKCS7)
    return 1;

i2d_PKCS7_fp(fpPKCS7, pkcs7_encrypt);
fclose(fpPKCS7);
X509_free(x509);
sk_X509_pop_free(x509_stack, X509_free);
代码正确吗? 函数i2d\u PKCS7\u fp崩溃。

我找到了解决方案:

PKCS7* pkcs7_encrypt = PKCS7_encrypt(x509_stack, bioIn, EVP_aes_128_cbc(), PKCS7_BINARY);

BIO *bioOut = BIO_new(BIO_s_file());
BIO_write_filename(bioOut, szPKCS7File);
i2d_PKCS7_bio(bioOut, pkcs7_encrypt);
但我还有一个问题。 这个文件中到底有哪些信息?
它是否包含了证书的公钥加密的AES密钥??/p>如果崩溃,代码是如何正确的?@ ZAPH它可能是被调用函数中的一个bug,但我不把它作为第一个选项。请FLoNod请您的问题包括适当的语言标记C++或C++。添加了C标记。不要在答案中提问。