我正在尝试使用M2Crypto在python中解密电子邮件。我遇到的问题是我在网上找到的例子似乎都在文件中读取。但在我的代码中,我有一个包含电子邮件正文的字符串。所以我正在传递电子邮件的正文。
以下是我根据以下程序编写的代码:
from M2Crypto import BIO, SMIME, X509
def decryptMessage(body):
# Instantiate an SMIME object.
s = SMIME.SMIME()
# Load private key and cert.
s.load_key('recipient_key.pem', 'recipient.pem')
# Load the encrypted data.
p7, data = SMIME.smime_load_pkcs7(body)
# Decrypt p7.
out = s.decrypt(p7)
return out.read()
def decryptMessage(body):
# Instantiate an SMIME object.
s = SMIME.SMIME()
# Load private key and cert.
s.load_key('recipient_key.pem', 'recipient.pem')
# Load the encrypted data.
p7, data = SMIME.smime_load_pkcs7(body)
# Decrypt p7.
out = s.decrypt(p7)
return out.read()
当我这样做时,我收到的错误是"文件名太长"
有人可以帮我理解如何解密我的电子邮件中的字符串吗?
答案 0 :(得分:0)
smime_load_pkcs7将文件名作为其参数,因此它将正在传递的电子邮件正文解释为文件名。遗憾的是,SMIME库记录很少,如果有一个变量将字符串作为参数而不是文件,则不清楚。一个黑客围绕这个将是这样的:
f = open("tmp", 'w')
f.write(body)
p7, data = SMIME.smime_load_pkcs7("tmp")
f.close()