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