跳转到主要内容

Python S/MIME工具包

项目描述

Python S/MIME工具包

此库实现了S/MIME处理器。它仅支持使用公钥RSA加密的S/MIME消息,在AES128-CBC、AES192-CBC或AES256-CBC模式下。

ASN.1实现不依赖于pyasn1,因为它在创建和读取CMS(密码消息语法)时太不完整。相反,此项目使用了asn1crypto

此实现不再使用已弃用的pycrypto;相反,它已切换到更现代的cryptography库。它不再是“纯Python”(因为后者有依赖关系),但至少它还能工作。

需求

  • Python 2.7或Python 3.5+

  • cryptography

  • asn1crypto

示例

以下代码加载Alice的公钥(PEM格式),并使用它加密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期望上述的< cite >smime.p7m文件应采用DER或PEM格式。后者应包含在< cite >——–BEGIN PKCS7——–和< cite >——–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 License 2.0许可。有关完整的许可文本,请参阅顶层分发目录中的LICENSE文件。

版本管理

本软件遵循语义版本控制

变更

0.1.0b1 (2019-01-06)

  • 初始发布。

项目详情


< span >发布历史记录 < span class="reset-text margin-top"> < a href="/help/#project-release-notifications">发布通知 | < a href="/rss/project/smime-py23/releases.xml">RSS源 < i class="fa fa-rss" aria-hidden="true">

下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

< a href="https://files.pythonhosted.org/packages/0b/29/35c7d188b35af6819301b2909581d258e712df60c965f4ee50ac01a0f99d/smime-py23-0.1.0b1.tar.gz"> smime-py23-0.1.0b1.tar.gz (93.6 kB < a href="#copy-hash-modal-fa8b8b44-72f8-4de9-b563-e1d2e9bdad0b">查看哈希值)

上传时间 < time datetime="2019-01-06T11:55:54+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> 2019年1月6日 < code >源

构建分发

< a href="https://files.pythonhosted.org/packages/a7/36/a5d12a3973bade2e979123557cf072142f054e67c8d9c932e6a8dd7e2455/smime_py23-0.1.0b1-py2.py3-none-any.whl"> smime_py23-0.1.0b1-py2.py3-none-any.whl (22.2 kB < a href="#copy-hash-modal-cf35ac84-5534-42ac-8bdb-26efcfccca93">查看哈希值)

上传时间 < time datetime="2019-01-06T11:55:57+0000" data-controller="localized-time" data-localized-time-relative="true" data-localized-time-show-time="false"> 2019年1月6日 < code >Python 2 < code >Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面