我需要找到一个密码密钥。该密钥的长度为10个字符,字母在密钥中的顺序是3,7,2,1,4,5,6,10,8,9。我还知道该密钥的md5值。
因此,我编写了以下代码:
mystring = "abcdefghijklmnopqrstuvwxyz"
for letter3 in mystring:
for letter7 in mystring[mystring.index(letter3):]:
for letter2 in mystring[:mystring.index(letter7)]:
for letter1 in mystring[:mystring.index(letter2)]:
for letter4 in mystring[mystring.index(letter1):]:
for letter5 in mystring[mystring.index(letter4):]:
for letter6 in mystring[mystring.index(letter4):]:
for letter10 in mystring[mystring.index(leter6):]:
for letter8 in mystring[:mystring.index(letter10)]:
for letter9 in mystring[mystring.index(letter8):]:
strr = "".join([letter1,letter2,letter3,letter4,letter5,letter6,letter7,letter8,letter9,letter10])
if hashlib.md5(strr).hexdigest() == md5:
print "key = " ,strr
break
字符的顺序:
关键点:
|letter1|letter2|letter3|letter4|letter5|letter6|letter7|letter8|letter9|letter10|
按字母顺序排序的关键字:
|letter3|letter7|letter2|letter1|letter4|letter5|letter6|letter10|letter8|letter9|
问题在于时间(一个迭代需要大约6小时的时间)。有没有优化for循环范围的建议?
a50e38475041f76219748ee22c4377d4
。 - Chaker