【发布时间】:2018-10-23 14:28:30
【问题描述】:
我正在尝试解密 SMIME 加密消息(使用 PKI.js 库在 JavaScript 中加密),如下所示:
Content-Type: application/pkcs7-mime; name=smime.p7m;
smime-type=enveloped-data
Content-Description: Enveloped Data
Content-Disposition: attachment; filename=smime.p7m
Content-Transfer-Encoding: base64
From: sender@example.com
To: recipient@example.com
Subject: Example S/MIME encrypted message
Date: Sun, 13 May 2018 23:53:48 +0000
Message-Id: <1526255628125-055f663b-fd554ae9-1ed33cf1@example.com>
MIME-Version: 1.0
MIIBzAYJKoZIhvcNAQcDoIIBvTCCAbkCAQIxggFuMIIBagIBADAjMB4xHDAJBgNVBAYTAlJVMA8G
A1UEAx4IAFQAZQBzAHQCAQEwPAYJKoZIhvcNAQEHMC+gDzANBglghkgBZQMEAgMFAKEcMBoGCSqG
SIb3DQEBCDANBglghkgBZQMEAgMFAASCAQA6EIOlgaYQ1/wYJe4DfZ5EDMLvCFbkj1h3CPtCsw7A
dKDdQAO1Sn25T0yyAO5iaXkETUGX2DGEqzOFspROrXObiuk4vLu0/D78780FhU59ybLY41m4ydT3
Dxpz3+2e3aRgfP2qnwG0WepIe14OWQWTZwtvRRrsh3AhjE9NAQik1MicPA8mTlQYKge6FEFbRvzu
+PNXht9bn/a+asSrPJleesST+srGm6/lllmTMOtqcGp5aelkQwCQ/aHJJ9HTSYtg8TAb4N78o00C
YJrhMrsKygJSC65VGV2BDbsbyBIhuiIdrCWx3JNoaKd2N6uix8V0UCHZHkzXnEduL5RH9SWdMIAG
CSqGSIb3DQEHATAdBglghkgBZQMEAQIEEGtZdxyVU9+8aONDzGlUjFuggAQQECObjBYnr23zUJ+6
60kRvAAAAAA=
我这样做的方式如下:
from M2Crypto import BIO, SMIME, X509
def decrypt(s):
mime = SMIME.SMIME()
with open("tmp.p7", 'wb') as f:
f.write(s.encode('utf-8'))
p7, data = SMIME.smime_load_pkcs7("tmp.p7")
return mime.decrypt(p7)
我得到的是以下消息:
File "/Users/Adam/Library/Python/3.5/lib/python/site-packages/M2Crypto/SMIME.py", line 113, in smime_load_pkcs7
p7_ptr, bio_ptr = m2.smime_read_pkcs7(bio)
M2Crypto.SMIME.SMIME_Error: no content type
如果我这样做了
with open("tmp.p7", 'w') as f:
f.write(s)
相反,结果是一样的......没有内容类型错误消息。
有人可以帮帮我吗?
【问题讨论】:
-
您是否尝试过先关闭文件
f.close() -
是的,然后是
M2Crypto.SMIME.PKCS7_Error: bad decrypt。 -
这可能是由于使用了错误的密钥。
-
所以你认为问题不在于代码?
标签: python encryption m2crypto smime