我正在编写一些代码来通过具有不同可能性的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多分钟......我怎样才能加快这个过程?