[加密]在AES的CBC模式下 pydes vs crypto

因为项目中有个非常重要的功能,并发量和访问量都很大,里面使用了pydes,总感觉它的性能不太好,从别人的对比来看,性能差距应该挺大,但还是自己测试下吧。 自己测试,心里更有数。

环境测试

由于加密,解密方式很多,,这里只测试一种,大概看下在完成相似功能性能差别就好(对于加密算法的基本原理还要学习)

pydes代码pyDes import *data = “name=orangleliu&age=26&love=xiaoniuniu&pc=macbookpro”aesobj = des(“12345678”, CBC, “87654321”)testnum = i in xrange(testnum):endata = aesobj.encrypt(data, “@”)resdata = aesobj.decrypt(endata, “@”)if resdata==data:num += 1print “Total number is %s, right number is %s”%(testnum, num)crypto代码base64import hashlibfrom Crypto import Randomfrom Crypto.Cipher import AES::self.bs = 32self.key = hashlib.sha256(key.encode()).digest():raw = self._pad(raw)iv = Random.new().read(AES.block_size)cipher = AES.new(self.key, AES.MODE_CBC, iv)return base64.b64encode(iv + cipher.encrypt(raw)):enc = base64.b64decode(enc)iv = enc[:AES.block_size]cipher = AES.new(self.key, AES.MODE_CBC, iv)return self._unpad(cipher.decrypt(enc[AES.block_size:])).decode(‘utf-8’):return s + (self.bs – len(s) % self.bs) * chr(self.bs – len(s) % self.bs):return s[:-ord(s[len(s)-1:])]key = 2*”12345678″data = “name=orangleliu&age=26&love=xiaoniuniu&pc=macbookpro”aesobj = AESCipher(key)testnum = 1000num = 0for i in xrange(testnum):endata = aesobj.encrypt(data)resdata = aesobj.decrypt(endata)if resdata == data:num += %(testnum, num)测试结果# time python pydes_test.pyTotal number is 1000, right number is 1000python pydes_test.py 10.34s user 0.02s system 99% cpu 10.368 total# time python crypto_test.pyTotal number is 1000, right number is 1000python crypto_test.py 0.09s user 0.01s system 91% cpu 0.112 total

pydes总是在10s左右, crypto总是在0.1s左右,就是2个数量级的差别啊。。赶紧换吧。

一起吃早餐,午餐,晚餐。或许吃得不好,

[加密]在AES的CBC模式下 pydes vs crypto

相关文章:

你感兴趣的文章:

标签云: