首页 > 代码库 > pyDes vs pycrypto

pyDes vs pycrypto

    最近公司接口有个需求, 数据传输过程需要加密, 加密的算法中有一项是des加密, 为了满足测试条件, 需要模拟解密及加密过程, 能够将数据还原, 从而校验每个值是否标准.


    公司的程序是使用java来实现的, 刚开始完成模拟解码(采用pyDes)的时候, java解码1M的数据需要1.2秒, python解码相同文件需要30秒, 感觉python太慢了. 后来采用pycrypto来对相同数据进行解码, 只需要0.4秒!!!


    下面是pyDes的样例代码及运行时间, 加密耗时20秒钟, 解密耗时19秒钟.

[root@localhost ~]# vim 03_des.py
# -.- coding:utf-8 -.-
__author__ = ‘root‘

import pyDes
import logging

# 定义日志输出格式.
logging.basicConfig(level=logging.DEBUG, datefmt=‘%Y-%m-%d %I:%M:%S‘,
                    format=‘%(asctime)s,%(msecs)d %(levelname)s: %(message)s‘,)

key = "PythonLi"
iv = "12345678"
content = "今天是个好日子"*10000
generateKey = pyDes.des(key=key, mode=pyDes.CBC, IV=iv, pad=None, padmode=pyDes.PAD_PKCS5)


logging.debug("开始加密")
encryptContent = generateKey.encrypt(content)
logging.debug("加密结束")

logging.debug("-"*30+"分割线"+"-"*30)

logging.debug("开始解密")
generateKey.decrypt(encryptContent)
logging.debug("解密结束")

[root@localhost ~]# python 03_des.py
2014-11-20 12:44:20,93 DEBUG: 开始加密        
2014-11-20 12:44:40,48 DEBUG: 加密结束
2014-11-20 12:44:40,48 DEBUG: ------------------------------分割线------------------------------
2014-11-20 12:44:40,48 DEBUG: 开始解密
2014-11-20 12:44:59,97 DEBUG: 解密结束


    下面是pycrypto的样例代码及运行时间, 加密耗时0.002秒, 解密耗时0.004秒

[root@localhost ~]# vim 03_pycrypto.py
# -.- coding:utf-8 -.-
__author__ = ‘root‘

import logging
from Crypto.Cipher import DES

# 定义日志输出格式.
logging.basicConfig(level=logging.DEBUG, datefmt=‘%Y-%m-%d %I:%M:%S‘,
                    format=‘%(asctime)s,%(msecs)d %(levelname)s: %(message)s‘,)

key = "PythonLi"
iv = "12345678"
content = "今天是个好日子"*10000
generateKey = DES.new(key, DES.MODE_CBC, iv)


logging.debug("开始加密")
encryptContent = generateKey.encrypt(content)
logging.debug("加密结束")

logging.debug("-"*30+"分割线"+"-"*30)

logging.debug("开始解密")
generateKey.decrypt(encryptContent)
logging.debug("解密结束")

[root@localhost ~]# python 03_pycrypto.py
2014-11-20 12:49:32,882 DEBUG: 开始加密
2014-11-20 12:49:32,886 DEBUG: 加密结束
2014-11-20 12:49:32,886 DEBUG: ------------------------------分割线------------------------------
2014-11-20 12:49:32,886 DEBUG: 开始解密
2014-11-20 12:49:32,890 DEBUG: 解密结束


最终结论就是,pyDes坑了我半年,我算是记住你了...


pyDes vs pycrypto