欢迎来到天天文库
浏览记录
ID:30429177
大小:86.90 KB
页数:11页
时间:2018-12-29
《《openssl加密》word版》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、OpenSSL加密OpenSSL加密OpenSSL加密OpenSSL加密OpenSSL加密发信人:hgoldfish(老鱼),信区:Python标题:发个我学习M2Crypto的笔记发信站:水木社区(ThuNov2618:58:242009),转信俺是OpenSSL的初学者,放在这里抛砖引玉。错误再所难免,请大家指正。加解密数据、操作密钥、操作SSL协议普遍使用了OpenSSL。虽然还有其它的使用C/C++开发的加密处理库,但是Python环境下支持最好的使用最广泛的还是OpenSSL。据pyth
2、on.org官方网站,目前有三个库提供了OpenSSL的包装。1.PyOpenSSL。这个库是比较早的,但是作者已经停止开发,并且只支持SSL功能,而没有提供加密、解密、X509等功能的包装。2.M2Crypto。完整支持OpenSSL。单元测试比较全面。在原有C语言API的基础上提供了Python的封装。3.ssl4py。与M2Crypto类似。但是完全使用C编写,与OpenSSL的API很类似。估计是用SWIG之类的工具生成的。据我本人看他的源代码,在调用EVP_CipherUpdate()函
3、数的时候,输出大小没有计算正确。此错误会造成数据不正确,是一个比较严重的BUG。我估计应该还有其它的BUG存在,可能比较不成熟。4.ezPyCrypto。全名是PythonCryptographyToolkit。据水木网友josephpei说,这个很强大,有望进入官方CPython的标准库内。不过考虑到学习OpenSSL的API以后找工作比较好办,所以暂时不考虑。综上所述,我在开发中使用M2Crypto。M2Crypto的API手册处于:目前,截止到2009年10月23日,官网上提供的M2Cryp
4、toforPython2.6(win32)安装包是不正确的。因为它提供的0.19版本并没有兼容0.20。所以需要下载M2Crypto的源代码自行编译。以下是编译的步骤:1.下载安装mingw32:2.下载安装swig:。选择下载SWIGforpython(win32)的版本。并且把swig的路径加入$PATH环境变量内。3.下载安装OpenSSL的Windows版本:4.把OpenSSL的include文件夹复制到Python的include文件夹内。把OpenSSL的几个库文件(*.a)复制到m
5、ingw32的lib文件夹内。5.OpenSSLforwindows的库文件与forUnix版本名字有些不大一样。需要把libeay32.dll.a改名liblibeay32.a,把libssl32.dll.a改名libssleay32.a。测试的版本是0.9.8h6.运行setup.pybuild-cmingw32bdist_wininst7.一切顺利的话在dist文件夹下可以找到安装程序。(附记)M2Crypto主页提供了一处描述如何在windows平台下使用msvc编译openssl和M2C
6、rypto的链接。经过试验,该方法不能在mingw32下成功。不过在一个用户评论上描述了mingw32下的方法,当时没仔细看,害我搞了半天没成功。(注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意)(注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意)经过我测试,编译后的M2Crypto虽然导入正常,但是一旦使用BIO进行文件操作,M2Crypto就会异常退出。并打印出NoAppLink这样的错误信息。如果不使用BIO的话,好像
7、又没啥问题。(注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意)(注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意注意)下面是几个模块的大致介绍:M2Crypto.BIO用于操作IO抽象类型。M2Crypto.BN用于操作大数M2Crypto.DH用于操作Diffie-HellmankeyexchangeprotocolM2Crypto.EVP高级的加密解密接口。与直接使用具体的加密算法不同。使用该接口,可以用相同的编程方式,调用
8、不同的算法处理数据。它包含了对称加密算法与非对称加密算法的支持。M2Crypto.EC椭圆曲线非对称加密算法M2Crypto.DSADSA非对称加密算法M2Crypto.RSARSA非对称加密算法M2Crypto.Rand操作随机数M2Crypto.SSL操作SSL协议M2Crypto.X509操作X509接下来,我们通过日常的编程任务来看看如何使用这些接口。一、如何使用MD5、SHA1等消息散列算法。虽然OpenSSL提供了直接操作MD5、SHA1算法以及blowfish等各种对
此文档下载收益归作者所有