我正在使用python来加密字符串列表。然而它需要很长时间(0.045秒/列表)。我是否犯了任何使我的代码运行缓慢的重大错误。 这是代码:
row=['string1', 'string2','string3','string4','string5','string6','string7','string8','string9']
from pyDes import *
import time
def encode(data,password):
k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
d = k.encrypt(data)
return d
start=time.time()
for idx, val in enumerate(row):
row[idx]=encode(str(val).encode(), 'password')
end=time.time()
print(end-start)
实际上,列表更长(~33)并且是字符串和整数的组合。 有关如何加快流程的任何提示。我也会考虑使用不同的加密方法。 谢谢!
答案 0 :(得分:3)
任何密码的纯python实现基本上都是狗慢。 Python是为很多东西而制作的,但是快速位操作并不是其中之一。这就是为什么许多解释语言使用C / C ++实现(甚至是手动优化的程序集)的密码。
在最近合理的英特尔& amp;上尝试PyCrypto supports the AES-NI CPU instruction {{3}} AMD处理器。谁知道,你实际上可能会使用一个在几分钟内无法被黑客攻击的密码实现(比如单个DES,其密钥大小为56位)。