openpgp的python实现
py-pgp的Python项目详细描述
摘要
python pgp的目标是在python中重现gnupg的全部功能。 它还可用于创建原始openpgp包和包流 用于测试目的。对某些人来说,这可能是一个重量级的解决方案 目的。
这是原始库的一个分支-原始库似乎没有活动和/或有一个pypi包。
替代方案
提供相关功能的其他python包:
- pyassuan-通信 使用gnupg的socket协议。
- pgpdump-一条纯Python 用于分析OpenPGP数据包的库。
- gnupg-在 gnupg可执行文件。
- python-gnupg-另一个 gnupg可执行文件的包装器。
- gpgkeys-另一个包装 关于gnupg可执行文件。
- gpglib-一条纯Python 用于分析OpenPGP数据包和解密消息的库。
- OpenPGP-未维护的 纯python库,具有旧版本的许多功能 格努普的。
- encryptedfile-a页 纯python库,用于在 openpgp兼容方式。
- PGPy-一条纯Python 具有OpenPGP数据包的基本解析和签名的库。
- OpenPGP-Python-a页 纯python端口 openpgp-php。它可以 分析OpenPGP数据包并验证并创建签名。
系统要求
- 基本构建
对于双鱼支持
- libtwofish dev
建议
- libgmp10 dev(用于pycrypto的fastmath扩展)
安装
pip install pgp
支持双鱼功能:
pip install pgp[twofish]
支持茶花:
pip install pgp[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或类似的否认 服务攻击。
开发
这个包的主存储库是on GitHub。在包装上开发 安装开发依赖项,克隆存储库并安装 “开发”附加功能。
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
此程序是免费软件:您可以重新分发和/或修改 根据由 自由软件基金会,或者许可证的第3版,或者 (由您选择)任何更高版本。
这个程序的发布是希望它能有用, 但没有任何保证;甚至没有 适销性或适合某一特定目的的适销性。见 GNU通用公共许可证了解更多详细信息。
你应该收到GNU通用公共许可证的副本 沿着用这个程序。如果没有,请参见<;http://www.gnu.org/licenses/>;。