加解密数据、操作密钥、操作SSL协议普遍使用了OpenSSL。虽然还有其它的使用C/C++开发的加密处理库,但是Python环境下支持最好的使用最广泛的还是OpenSSL。 M2Crypto。完整支持OpenSSL。单元测试比较全面。在原有C语言API的基础上提供了Python的封装。M2Crypto的API手册处于:
下面是几个模块的大致介绍:
M2Crypto.BIO 用于操作IO抽象类型。
M2Crypto.BN 用于操作大数
M2Crypto.DH 用于操作Diffie-Hellman key exchange protocol
M2Crypto.EVP 高级的加密解密接口。与直接使用具体的加密算法不同。使用该接口,可以用相同的编程方式,调用不同的算法处理数据。它包含了对称加密算法与非对称加密算法的支持。
M2Crypto.EC 椭圆曲线非对称加密算法
M2Crypto.DSA DSA非对称加密算法
M2Crypto.RSA RSA非对称加密算法
M2Crypto.Rand 操作随机数
M2Crypto.SSL 操作SSL协议
M2Crypto.X509 操作X509
一、如何使用MD5、SHA1等消息散列算法。
虽然OpenSSL提供了直接操作MD5、SHA1算法以及blowfish等各种对称加密算法的API,但是M2Crypto并没有将其包含进来。不过也好,各种算法都有各自的API,记起来麻烦。通过M2Crypto.EVP,我们仍然可以调用这些算法。下面是一个MD5的例子:
- from M2Crypto.EVP import MessageDigest
- #摘要加密算法md5
- def md5(buf):
- b = MessageDigest('md5')
- b.update(buf)
- b.update('888')
- c = b.digest()
- s = ''
- for i in c: s = s + '%02x' % ord(i)
- return s
1.引入MessageDigest类;
4.实例化MessageDigest类,并传入所用摘要算法名称的字符串,可以为md5,sha1等。
5,6生成摘要,7将摘要内容赋给c
8,9,10将摘要的内容转换成16进制字符返回。
阅读(3435) | 评论(0) | 转发(0) |