我如何跟踪以蛮力方式尝试过的组合?

问题描述 投票:0回答:1

我正在使用Python 3创建强力Vigenere解密程序。 Vigenere代码基本上是将字母字符串加在一起。

[我希望我的代码工作的方式是用户放入他们想要的任何键(完成此操作),将字母变成其数字(也完成),然后将每对键加在一起(进行此操作,以及我需要帮助的内容),并打印出两个键及其添加的内容。

为此,我需要能够跟踪哪些键对已添加在一起。我该怎么办?

BTW,我当前的代码是这个。我正在解码和编程实践中都这样做,所以我真的只想要跟踪添加的密钥对的方法,而不是整个程序。

#defines start variables
import math
alph = "abcdefghijklmnopqrstuvwxyz"
keyqty = int(input("how many keys?"))
listofkeys = []
listofindex = []
timer = 0

#gets keys
while True:
    if timer >= keyqty:
        break
    else:
        pass
    listofkeys.append(input("key: ").lower())
    timer += 1
tempkey = ""

#blank before key 
for item in listofkeys:
    listofindex.append("")
    for letter in item:
        listofindex.append(alph.find(letter)

timer = 0
newkey = False
key1index = []
key2index = []
endex = []
printletter = ""
doneadds = []

显然,它仍然需要其他工作,但需要一些帮助。

python python-3.x brute-force vigenere
1个回答
1
投票

您可以将一组用于快速查找(摊销的恒定时间)。

tried = set()
for ...
   if word not in tried:
       try()
       tried.add(word)

或使用itertools.product()生成试验,而无需跟踪已尝试的试验。

for password in itertools.product(alph, repeat=keyqty):
   try(password)
© www.soinside.com 2019 - 2024. All rights reserved.