2014-12-01 84 views
0

我想在使用M2Crypto的python中解密電子郵件。我遇到的問題是我在網上找到的例子似乎都在一個文件中讀取。但在我的代碼中,我有一個包含電子郵件正文的字符串。所以我傳遞了電子郵件的正文。使用Python解密字符串M2Crypto

這裏是我從立足我的程序代碼:

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() 

當我這樣做,我得到提示「文件名太長」錯誤

有人可以幫助我瞭解如何從我的電子郵件解密字符串?

回答

0

smime_load_pkcs7將文件名稱作爲參數,因此它會將您傳遞的電子郵件正文解釋爲文件名。不幸的是,SMIME庫文檔不足,不清楚是否有一個將字符串作爲參數而不是文件的變體。一個黑客周圍這將是這樣的:

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

謝謝,但我沒有訪問到這樣的文件系統。因此,我的消息在一個局部變量的原因。 :d – TheBigOnion 2014-12-01 20:28:21