OpenPGP的Python实现
项目描述
摘要
python-pgp旨在在Python中重现GnuPG的全部功能。它也可以用于创建原始OpenPGP数据包和流,用于测试目的。这可能对于某些用途来说是一个有点重型的解决方案。
这是原始库的分支 - 原始库似乎没有活动,并且/或者没有PyPI软件包。
替代方案
其他提供相关功能的Python软件包
pyassuan - 使用其套接字协议与GnuPG通信。
pgpdump - 用于解析OpenPGP数据包的纯Python库。
gnupg - GnuPG可执行文件的包装器。
python-gnupg - GnuPG可执行文件的另一个包装器。
gpgkeys - GnuPG可执行文件的另一个包装器。
gpglib - 用于解析OpenPGP数据包和解密消息的纯Python库。
OpenPGP - 一个未维护的纯Python库,具有旧版GnuPG的大部分功能。
encryptedfile - 一个用于以OpenPGP兼容方式对称加密文件的纯Python库。
PGPy - 一个具有基本解析和签名OpenPGP分组的纯Python库。
OpenPGP-Python - openpgp-php的纯Python移植。它可以解析OpenPGP分组并验证和创建签名。
系统要求
build-essential
为了支持Twofish
libtwofish-dev
推荐
libgmp10-dev(用于pycrypto的fastmath扩展)
安装
pip install pgp
带有Twofish支持
pip install pgp[twofish]
带有Camellia支持
pip install pgp[camellia]
带有Twofish和Camellia支持
pip install pgp[camellia,twofish]
用法
高级
解析消息
from pgp import read_message message = read_message(data)
解析可传输密钥
from pgp import read_key key = read_key(data)
加载GnuPG数据库
from pgp import get_gnupg_db db = get_gnupg_db() key = db.search(user_id='Joe')[0]
从密钥服务器检索密钥并为其创建消息
>>> import datetime >>> from pgp import * >>> from pgp.keyserver import get_keyserver >>> ks = get_keyserver('hkp://pgp.mit.edu/') >>> results = ks.search('Joe Bloggs') >>> recipient_key = results[0].get() >>> message = message.TextMessage( ... u"This message was encrypted using Python PGP", ... datetime.datetime.now()) >>> my_secret_key = read_key_file('secret_key.gpg') >>> my_secret_key.unlock('My passphrase') >>> message = message.sign(my_secret_key) >>> message = message.compress(2) # Compression algorithm 2 >>> message = message.public_key_encrypt(9, recipient_key) >>> message_packets = message.to_packets() >>> message_data = b''.join(map(bytes, message_packets)) >>> armored_message = armor.ASCIIArmor( ... armor.PGP_MESSAGE, message_data) >>> file_handle = open('message.asc', 'w') >>> file_handle.write(str(armored_message)) >>> file_handle.close()
低级
解析分组流
from pgp.packets import parsers parsers.parse_binary_packet_data(packet_data)
序列化分组
from pgp.packets import parsers packets = parsers.parse_binary_packet_data(packet_data) b''.join(map(bytes, packets))
安全
如果您使用此包来处理私钥数据和解密,请注意,目前Python中还没有(合理)安全擦除内存的方法,并且事物通常以非明显的方式频繁复制。如果您担心密钥数据因内存泄漏而受损,请不要使用此包来处理密钥数据。另一方面,“如果您的内存经常受到损害,我建议重新考虑您的安全设置。”
OpenPGP使用压缩算法。当向此库提供不受信任的数据时,请警惕Zip bomb或类似的拒绝服务攻击。
开发
此包的主要存储库位于GitHub上。要在包上进行开发并安装开发依赖项,请克隆存储库并安装“dev”附加组件。
git clone git@github.com:mitchellrj/python-pgp.git cd python-pgp virtualenv . bin/pip install -e ".[dev]"
运行测试
bin/python setup.py nosetests
构建文档
bin/python setup.py build_sphinx
许可证
版权(C)2014 Richard Mitchell
本程序是免费软件:您可以根据自由软件基金会发布的GNU通用公共许可证的条款重新分发和/或修改它,许可证版本为3,或(根据您的选择)许可证的任何较新版本。
本程序根据希望它将是有用的,但没有任何保证;甚至没有关于其适销性或特定用途适用性的暗示保证。有关详细信息,请参阅GNU通用公共许可证。
您应该已收到GNU通用公共许可证副本。如果没有,请参阅https://gnu.ac.cn/licenses/。
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源代码分发
构建发行版
py-pgp-0.0.1.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cad3611491598d1111a8abe0ebe5aa55119353bd8f7c78f623c16d131d3b85fc |
|
MD5 | 3a20198672730d10fd35bd18047023a6 |
|
BLAKE2b-256 | 63d142ae81ae33db41b7474df650c71ea7648a14477a8103d53c974c872a24b8 |
py_pgp-0.0.1-py3.4.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 1c683e4cbae84f4f5500714493bbdb2845238bd4860e61cb5485b7a1094fd14f |
|
MD5 | b02ced06a077a8d539a73503021d4f44 |
|
BLAKE2b-256 | 66ad8da6e200632a3232ae59f0ef7bd24a611263fb20cc6028f31923158b10ca |
py_pgp-0.0.1-py3.3.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ed96b27acf35ff69c8902364594429eb0d83e95bec5157b544fc21630af4d5eb |
|
MD5 | b4b77fb556072eb94d652b719b2c50b4 |
|
BLAKE2b-256 | b28847f5a918c196f2b956c22d493f6f1ca1827d8f3ecd81d602139045f99aa7 |
py_pgp-0.0.1-py3.2.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3bf921781fdef4b8a9bc83cf2a76782cbd3446b4c96e4f4d2edb81821b8bad4d |
|
MD5 | 38037cacb2660a9ff7683043c84b8cd4 |
|
BLAKE2b-256 | 3abbc77504dfa1847310182f3c165ef08256c1819a1325040ef2fffd6ad1ba70 |
py_pgp-0.0.1-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e3d2b7bdf73d8e97cca12abad484df4d14d6b08da206f9547b839ff702a4ff83 |
|
MD5 | dd7242bccdb855db099e077940d67f47 |
|
BLAKE2b-256 | 473a13a9d55dabdb316d82017014553e97ebc11e833c07615a5b24930acf01ae |