2011-11-07 18 views
1

這是我必須弄清楚的問題:使用解決在沒有鑰匙的V @ genere碼 - 蟒蛇

「消息已被加密的V @ genere加密法討論了類 ,它的密文EQNVZ已經截獲打破假設 密鑰的長度與消息的長度相同,並且消息和密鑰 只包含大寫字母。「

是否有辦法在Python中做到這一點?我知道有一種方法可以在python中創建密文,但是有沒有辦法以其他方式進行?

+1

是的,有... –

+0

是「EQNVZ」的密文嗎? –

+0

密鑰的長度與密文相同,你可以選擇一個密鑰來製作你喜歡的任何明文。有沒有可以做出的假設,例如鑰匙是一個真正的單詞? – Qwerky

回答

10

這是個詭計的問題。如果「密鑰長度與消息長度相同」,那麼你有一個隱藏除消息長度以外的所有內容的one-time pad

+0

我在想這可能是一種可能性,但不知道我是否錯過了一些東西或者不知道如何去做 – JR34

+1

+1 - 除非你知道關鍵詞來自一小組可能性,否則這個是牢不可破的。 – Qwerky

2

由於您的密文是如此短暫,它可能比較容易只是蠻力它:

def break_vignere(input, list_of_words): 
    for word in list_of_words: 
     crypt = vignere(word) 
     if crypt == input: 
      return word 
    return None 

當然,如果我們沒有發現在我們的list_of_words輸入文本也可能會失敗。

0

如果「EQNVZ」是整個密文,那麼關鍵也是5個大寫字符,以便

from string import uppercase 
from itertools import product, imap 
for key in imap("".join, product(uppercase, repeat=5)): 
    if test(key): 
     break 

將測試所有按鍵假設你有一個函數test(),檢查該明文是全部大寫,也許反對字典。