Я пишу код для прохождения через шифр Vigenere с различными возможностями, а затем заставляю его только добавлять список к возможным вариантам, которые приводят к слову при расшифровке (таким образом, я не получаю тысячи распечатокМне говорят только с наиболее вероятными возможностями).
Вот код на данный момент
def vigenere(input):
print("VIGENERE")
key = ""
keyList = []
textList = []
for word in englishDictionary:
key = re.sub('[\W_]+', '', word)
if key[:len(input)] not in keyList:
while len(key) < len(input):
key = key + key
keyLetters = list(key.upper())
keyNumbers = []
for x in keyLetters:
keyNumbers.append(alphaNum.get(x))
vigenereOutput = ""
for z in list(input):
try:
keyNum = int(keyNumbers[0])
except IndexError:
pass
keyNum = keyNum - 1
inbetween = int(alphaNum.get(z)) - keyNum
del keyNumbers[0]
if inbetween < 1:
inbetween = 26 + inbetween
vigenereOutput = vigenereOutput + numAlpha.get(str(inbetween))
if vigenereOutput in englishDictionary:
keyList.append(key[:len(input)])
textList.append(vigenereOutput)
if len(keyList) > 0:
for keyEntry in len(keyList):
print("Key:", keyList[keyEntry])
print("Text:", textList[keyEntry])
print()
The englishDictionary - это список всех слов в моем текстовом файле словаря (довольно большой файл, но использование маленького слова разрушит смысл этогодекодер)
Сейчас, однако, весь словарь занимает более 20 минут ... как я могу ускорить этот процесс?