Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1502569
  • 博文数量: 164
  • 博客积分: 2993
  • 博客等级: 少校
  • 技术积分: 1718
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-24 11:42
文章分类

全部博文(164)

文章存档

2014年(1)

2013年(36)

2012年(90)

2011年(37)

分类: Python/Ruby

2012-06-26 15:41:50

    加解密数据、操作密钥、操作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的例子:

点击(此处)折叠或打开

  1. from M2Crypto.EVP import MessageDigest
  2. #摘要加密算法md5
  3. def md5(buf):
  4.     b = MessageDigest('md5')
  5.     b.update(buf)
  6.     b.update('888')
  7.     c = b.digest()
  8.     s = ''
  9.     for i in c: s = s + '%02x' % ord(i)
  10.     return s
1.引入MessageDigest类;
4.实例化MessageDigest类,并传入所用摘要算法名称的字符串,可以为md5,sha1等。
5,6生成摘要,7将摘要内容赋给c
8,9,10将摘要的内容转换成16进制字符返回。
阅读(3376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~