Skip to main content

Python 的加密模块。

项目描述

Python 密码学工具包 (pycrypto)

这是安全散列函数(如 SHA256 和 RIPEMD160)和各种加密算法(AES、DES、RSA、ElGamal 等)的集合。该软件包的结构使添加新模块变得容易。本节基本完成,以后软件界面几乎肯定不会出现不兼容的变化;剩下要做的就是修复出现的任何错误。如果您遇到错误,请在 Launchpad 错误跟踪器中报告,网址为

https://launchpad.net/products/pycrypto/+bugs

SHA256 模块的示例用法是:

>>> from Crypto.Hash import SHA256
>>> hash = SHA256.new()
>>> hash.update('message')
>>> hash.digest()
'\xabS\n\x13\xe4Y\x14\x98+y\xf9\xb7\xe3\xfb\xa9\x94\xcf\xd1\xf3\xfb"\xf7\x1c\xea\x1a\xfb\xf0+F\x0cm\x1d'

加密算法(在本例中为 AES)的示例用法是:

>>> from Crypto.Cipher import AES
>>> obj = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> message = "The answer is no"
>>> ciphertext = obj.encrypt(message)
>>> ciphertext
'\xd6\x83\x8dd!VT\x92\xaa`A\x05\xe0\x9b\x8b\xf1'
>>> obj2 = AES.new('This is a key123', AES.MODE_CBC, 'This is an IV456')
>>> obj2.decrypt(ciphertext)
'The answer is no'

模块的一种可能应用是编写安全管理工具。另一个应用程序是编写守护程序和服务器。客户端和服务器可以加密正在交换的数据并相互验证自己的身份;守护进程可以加密私有数据以增加安全性。Python 还为密码算法的原型设计和实验提供了一个令人愉快的框架;由于其任意长度的整数,公钥算法很容易实现。

从 PyCrypto 2.1.0 开始,PyCrypto 提供了一个易于使用的随机数生成器:

>>> from Crypto import Random
>>> rndfile = Random.new()
>>> rndfile.read(16)
'\xf7.\x838{\x85\xa0\xd3>#}\xc6\xc2jJU'

还提供了 Python 标准“随机”模块的更强大版本:

>>> from Crypto.Random import random
>>> random.choice(['dogs', 'cats', 'bears'])
'bears'

警告:为了使随机数生成器正常工作,您必须在使用 os.fork() 之后在父进程和子进程中调用 Random.atfork()

安装

PyCrypto 使用 Python 2.1 到 3.3 版本编写和测试。不支持 Python 1.5.2。

这些模块是使用 Distutils 打包的,所以你可以简单地运行“python setup.py build”来构建包,然后“python setup.py install”来安装它。

如果 setup.py 脚本崩溃并出现 DistutilsPlatformError 并抱怨文件 /usr/lib/python2.2/config/Makefile 不存在,这意味着编译新 Python 模块所需的文件未安装在您的系统上。Red Hat 用户经常遇到这种情况,因为他们没有安装 python2-devel RPM。解决方法是简单地安装必要的 RPM。在 Debian/Ubuntu 上,您需要 python-dev 软件包。

要验证一切是否正常,请运行“python setup.py test”。它将测试所有加密模块,跳过不可用的模块。如果测试脚本在您的机器上报告错误,请使用错误跟踪器(上面给出的 URL)报告错误。如果可能,请追踪错误并包含修复它的补丁,前提是您能够满足 http://www.pycrypto.org/submission-requirements/上的资格要求。

可以仅测试单个子包或单个模块,例如,当您调查某些测试失败的原因并且不想每次都运行整个套件时。使用“python setup.py test –module=name”,其中“name”是子包(Cipher、PublicKey 等)或模块(Cipher.DES、PublicKey.RSA 等)。要进一步减少测试覆盖率,请同时传递选项“--skip-slow-tests”。

要在 Python 安装的 site-packages 目录下安装包,请运行“python setup.py install”。

如果您对此包有任何意见、更正或改进,请将它们报告到我们的邮件列表,可通过 PyCrypto 网站访问:

http://www.pycrypto.org/ https://www.dlitz.net/software/pycrypto/

项目详情


下载文件

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

源分布

pycrypto-2.6.1.tar.gz (446.2 kB 查看哈希

已上传 source