通过搜索,我可以找到以下解决方案来生成给定字符串的所有组合并计算它们的哈希值。现在我可以在 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)
多线程或多处理将是加快程序速度的最佳方式,而不是切换到更快的语言,如C++
一些改进措施:
- 不要使用
global
变量 - 使用
timeit
进行有意义的测量 - 使用 Python 3
- 我认为您可以使用
itertools
中的permutations
,生成速度更快,但生成的数据也更少 - 让一切可能不变