跳转到主要内容

OpenPGP的Python实现

项目描述

https://travis-ci.org/SkierPGP/python-pgp.svg?branch=master https://coveralls.io/repos/SkierPGP/python-pgp/badge.png

摘要

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

安装

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 (126.0 kB 查看哈希值)

上传时间: 源代码

构建发行版

py_pgp-0.0.1-py3.4.egg (375.8 kB 查看哈希值)

上传时间: 源代码

py_pgp-0.0.1-py3.3.egg (381.9 kB 查看哈希值)

上传于 源代码

py_pgp-0.0.1-py3.2.egg (295.3 kB 查看哈希值)

上传于 源代码

py_pgp-0.0.1-py3-none-any.whl (172.9 kB 查看哈希值)

上传于 Python 3

由以下支持