在Python中使用OpenSSL解密CMS

时间:2014-01-09 19:13:43

标签: python openssl pkcs#7

我目前正在尝试使用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命令。

0 个答案:

没有答案