通过搜索,我可以找到以下解决方案,以生成给定字符串的所有组合并计算其哈希值。现在,我可以在21秒内生成10000000个字符串和哈希值。但是,我需要一种更快的方法。
import itertools
import hashlib
import time
def pow():
global cnt
authdata = "eTSlASZYlLNgKJuYeIQvGVbiAcLEEOVgAQPzSrtCOIwQxQHyFHcfjgRQJBJDlojx";
l = 'abcdefghij'
result = itertools.product(*([l] * 7))
for each in result:
cnt = cnt + 1
suffix = ''.join(each)
authdataSuffix = authdata + suffix
hashValue = hashlib.sha1(authdataSuffix.encode('utf-8')).hexdigest()
if hashValue.startswith("0"*8):
print (hashValue)
cnt = 0
start = time.time()
pow()
end = time.time()
print(cnt)
print(end - start)
答案 0 :(得分:0)
除了切换为C++
之类的更快语言之外,多线程或多处理将是加快程序速度的最佳方法。
答案 1 :(得分:0)
一些改进之处:
global
变量timeit
进行有意义的测量permutations
from itertools
,它生成速度更快,但生成的数据更少