Skip to main content

Python S/MIME 工具包

项目描述

Python S/MIME 工具包

这个库实现了一个 S/MIME 处理程序。它仅支持在 AES128-CBC、AES192-CBC 或 AES256-CBC 模式下使用公共 RSA 密钥对 S/MIME 消息进行加密。

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 获得许可。有关完整的许可证文本,请参阅顶部分发目录中的 LICENSE 文件。

版本控制

该软件遵循语义版本控制

变化

0.1.0b1 (2019-01-06)

  • 初始发行。

项目详情


下载文件

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

源分布

smime-py23-0.1.0b1.tar.gz (93.6 kB 查看哈希)

已上传 source

内置分布

smime_py23-0.1.0b1-py2.py3-none-any.whl (22.2 kB 查看哈希

已上传 py2 py3