蟒蛇模拟工具

smime-py23的Python项目详细描述


python s/mime工具包

警告

这个包是来自https://github.com/balena/python-smime的纯fork版本,包含一些必要的重构。 所有学分归原作者所有。 此fork版本(md nazrul islam<;email2nazrul@gmail.com>;)的发布者不保留任何版权。

这个库实现了一个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

更改

0.1.0b1(2019-01-06)

  • 初次发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
从java包创建可执行jar文件   使用SFDC合作伙伴API创建新的“OpportunityLineItemSchedule”时发生java错误   java如何将一些用户定义的自定义参数直接插入到动态清单中?   java确定JFrame的图形配置?   java 安卓 studio中PendingEvent中的请求代码是什么   java如何在javaFx中为多个场景创建一个菜单栏   java ListNode头。下一个next=新的ListNode(0);这个错误是什么?   javax-to-Google-text-api。网ssl。异常:管道破裂   JAVAlang.ClassCastException:org。冬眠hql。内部的阿斯特。树无法将SqlNode转换为组织。冬眠hql。内部的阿斯特。树FromReferenceNode   jxl中程序关闭时java数据损坏   在java中从arraylist获取对象字段   继承java如何在实现父方法的同时扩展类   java spring boot thin jar什么都不做   java Eclipse消息称列表无法解析为类型   Java中的swing简单动画   java将prejson编码的字符串输出到spring框架   java ExpandableListView。setOnClickListener工作不正常   java将servletinputstream转换为sequenceinputstream   用Java4th版思考(尝试使用NetBeans构建本书的项目,但没有成功)   如何使用java从PostgreSQL数据库中的现有数据库创建新的XML文件