我正在使用CryptEncryptMessage来生成一个PKCS#7封装的消息。 我使用szOID_NIST_AES256_CBC作为encryptionalgorithm。 生成的消息似乎是有效的,但密钥传输algorithm的RSAES-OAEP在野外的支持有限(Thunderbird,OpenSSL SMIME模块之间的许多人不支持它)。 我想让CAPI恢复到旧的RSAencryptionencryption密钥传输。 有没有办法做到这一点,我可以恢复到低级消息传递函数,如果有一种方法,而不是使用CryptEncryptMessage但我找不到一种方法,即使使用低级别的function。 码: CRYPT_ENCRYPT_MESSAGE_PARA EncryptMessageParams; EncryptMessageParams.cbSize = sizeof(CMSG_ENVELOPED_ENCODE_INFO); EncryptMessageParams.dwMsgEncodingType = PKCS_7_ASN_ENCODING; EncryptMessageParams.ContentEncryptionAlgorithm.pszObjId = szOID_NIST_AES256_CBC; EncryptMessageParams.ContentEncryptionAlgorithm.Parameters.cbData = 0; EncryptMessageParams.ContentEncryptionAlgorithm.Parameters.pbData = 0; EncryptMessageParams.hCryptProv = NULL; EncryptMessageParams.pvEncryptionAuxInfo = NULL; EncryptMessageParams.dwFlags = 0; EncryptMessageParams.dwInnerContentType = 0; BYTE pbEncryptedBlob[640000]; DWORD pcbEncryptedBlob = 640000; BOOL retval = CryptEncryptMessage(&EncryptMessageParams, cRecipientCert, pRecipCertContextArray, pbMsgText, dwMsgTextSize, pbEncryptedBlob, &pcbEncryptedBlob);