我目前正在尝试使用Python解密一些CMS加密文本。我一直无法找到可以在OpenSSL中使用CMS实现的库(Tried M2Crypto,PyOpenSSL,PyCrypto)。
发送给我的邮件包含使用以下Java加密的数据:
public static byte[] cmsEncrypt(byte[] data, Certificate cert) throws NoSuchAlgorithmException, NoSuchProviderException, CMSException, IOException {
CMSEnvelopedDataGenerator gen = new CMSEnvelopedDataGenerator();
gen.addKeyTransRecipient((X509Certificate) cert);
CMSProcessable cmsData = new CMSProcessableByteArray(data);
CMSEnvelopedData enveloped = gen.generate(cmsData, CMSEnvelopedDataGenerator.AES128_CBC, 128, "BC");
return enveloped.getEncoded();
}
这个Java包含一些不推荐使用的方法,遗憾的是我无法控制这些方法。是否有可以使用的Python OpenSSL模块解密此CMS加密数据?截至目前,我正在使用这个Python来解析并使用bash OpenSSL命令进行解密:
from subprocess import call
decrypt = call(['openssl', 'cms', '-decrypt', '-binary', '-inkey', 'key.pem', '-in', 'message.msg'])
我更愿意在Python中完全执行此操作,而无需使用shell OpenSSL命令。