蟒蛇模拟工具
smime的Python项目详细描述
这个库实现了一个s/mime处理程序。它只支持s/mime消息 在AES128-CBC、AES192-CBC或AES256-CBC中使用公开RSA密钥的加密 模式。
ASN.1实现不依赖于Pyasn1,因为它显示出对于 创建和读取CMS(加密消息语法)。取而代之的是 asn1crypto用于此项目。
此实现不再使用不推荐的pycrypto,而是 被切换到更现代的密码学库。它不是“纯Python” 再也没有了(因为后者的依赖性),但至少起作用了。
要求
- python 2.7或python 3.5+
- 密码学
- asn1crypto
示例
下面的代码以pem格式加载alice的公钥并使用它进行加密 s/mime格式的电子邮件:
import sys import smime message = [ 'To: "Alice" <alice@foo.com>', 'From: "Bob" <bob@bar.com>', 'Subject: A message from python', '', 'Now you see me.' ] with open('alice-public-key.pem', 'rb') as pem: print(smime.encrypt('\n'.join(message), pem.read()))
输出:
To: "Alice" <alice@foo.com> From: "Bob" <bob@bar.com> Subject: A message from python MIME-Version: 1.0 Content-Type: application/pkcs7-mime; smime-type=enveloped-data; name=smime.p7m Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename=smime.p7m <base64-enveloped-data>
可以使用命令行中的openssl对其进行解密:
$ openssl smime -decrypt -in smime.p7m -inkey alice-private-key.pem
openssl希望上面的smime.p7m文件应该是der或pem格式。 后者应包含在-–begin pkcs7-–和-–end中 pkcs7-–和内容应该使用base64编码,就像输出一样 上面的命令。示例:
-----BEGIN PKCS7----- MIIBdgYJKoZIhvcNAQcDoIIBZzCCAWMCAQAxgb4wgbsCAQAwJjASMRAwDgYDVQQD EwdDYXJsUlNBAhBGNGvHgABWvBHTbi7EELOwMAsGCSqGSIb3DQEBAQSBgCVAQwNg LmJ5ESYxOM1YbOLz2gvzWY1Fk+LZZiylYe7+o1/e/MjtzNwhnu+8vziFwHbXEH1Y jndIbUxiLyXb3omtNDunRICQin5bdo6BI7oE0MufUSqMjk0YUk8UQeNCiUfK89PR RfDclb1/sM3XZ7mUJa2OzpnuQIWec3MuJ3k4MIGcBgkqhkiG9w0BBwEwHQYJYIZI AWUDBAEqBBCVZVOt2lxSzmd+Ti1M372xgHDR0+ToLk1MJeTTtmJdnnNNH6631PN0 i3NJeJBKDDs4onI8xywqFtJP0of6GPoTGV/7D2vkgO2+jhCBTrzjYczbdOhh6Z5X o0i/81NPSoaLhrfwKMQvT7sXX7c9YdbTjyglyGqhXUN8h+mIRlP9IStD -----END PKCS7-----
请记住,以上格式仅用于测试 使用openssl加密。不要在电子邮件中这样做。
许可证
此软件是根据apache许可证2.0授权的。请参阅中的许可文件 完整许可证文本的顶部分发目录。
版本控制
这个软件遵循Semantic Versioning