Сделать код Python для поиска в словаре более эффективным (Vigenere Cipher) - PullRequest
0 голосов
/ 11 июня 2018

Я пишу код для прохождения через шифр 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 минут ... как я могу ускорить этот процесс?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...