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