0
我想弄清楚一项任务,要求我们编写一个程序来强制加密的凯撒密码消息。我能做到这一点的地方我的程序打印出所有可能的解密消息,但我被困在下一环节点,指出:蛮子在Python中强制使用凯撒密码
对于每个26可能解密的消息,我们的程序需要图看看它“看起来像英语”而不是加密的乱码。
下面是这样做的:我们将把可能解密的消息中的每个单词都看成一本字典(英文单词列表)。如果单词在词典中,那么这是一个英语单词;如果在这个可能解密的消息中有很多英文单词,则很可能这个消息是正确的解密明文。 (如果消息中的字词非常少,那么这个消息就不是英文明文)。因此,我们需要计算在字典中找到的每个可能解密的消息中有多少个字,从而节省了总数以及产生它的信息。
一旦我们完成了所有26种可能的解密,我们应该期望字典中“最大”的可能解密消息实际上是正确解密的明文,这就是我们返回的消息。
这里是我的代码至今:
alphabet = 'abcdefghijklmopqrstuvwxyz'
infile = open('wordlist.txt', 'r')
def Rotate(key: int) -> str:
rotate = ""
for l in alphabet:
if l in alphabet:
rotate += alphabet[(alphabet.index(l) + key) % (len(alphabet))]
return rotate
def Caesar_break(sentence:str)-> str:
"""Takes a str encrypted by a caesar cipher and returns the original string
without using the cipher key"""
infile = open('wordlist.txt', 'r')
possible = []
for key in range(25):
Rotate(key)
table = str.maketrans(Rotate(key), alphabet)
possible.append(sentence.translate(table))
最终的结果应该是
Caesar_break("I qwxm bqra lwma nwb bitm bw uwnp jmkicam I qidm wbqmz abcoo bw lw")
打印
我希望这不会采取长因为我有其他的事情要做
我不知道这里是否有问题。 –
基本上我的代码返回了所有可能的消息代码解码方式的列表,并且我需要它能够区分哪些解码消息是正确的,并且只返回该消息> –
如果您来,我们将尽力帮助跨越一个特定的问题,但只是说你的代码没有足够的意味着你要求我们为你写代码。 – zondo