使用python代码搜索字典更有效(vigenere cipher)

时间:2018-06-11 15:21:00

标签: python performance dictionary

我正在编写一些代码来通过具有不同可能性的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()

englishDictionary是我的词典文本文件中所有单词的列表(相当大的文件,但使用小文件会破坏这个解码器的重点)

现在,整篇字典花了20多分钟......我怎样才能加快这个过程?

0 个答案:

没有答案