使用Python M2Crypto解密字符串

时间:2014-12-01 20:08:41

标签: python m2crypto

我正在尝试使用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()

当我这样做时,我收到的错误是"文件名太长"

有人可以帮我理解如何解密我的电子邮件中的字符串吗?

1 个答案:

答案 0 :(得分:0)

smime_load_pkcs7将文件名作为其参数,因此它将正在传递的电子邮件正文解释为文件名。遗憾的是,SMIME库记录很少,如果有一个变量将字符串作为参数而不是文件,则不清楚。一个黑客围绕这个将是这样的:

f = open("tmp", 'w')
f.write(body)
p7, data = SMIME.smime_load_pkcs7("tmp") 
f.close()