2013-10-20 86 views
1

當您知道密鑰的長度但不知道密鑰的長度時,我正努力讓自己的頭靠近Vigenere密碼。如果我知道關鍵字,我可以破譯文本,但我很困惑如何確定關鍵是什麼。如果密鑰長度已知,則確定Vigenere密碼的密鑰

舉一個例子,我給了密文和一個長度爲6的密鑰。這就是我給的所有,我被告知密鑰是一組任意的字母,不一定要組成一個字在英語中,換句話說,是一組隨機的字母。

有了這些知識,我只能將密文分解成6個子文本,每個子文本都包含由關鍵字加密的字母,因此第一個子文本包含從第一個字母開始的每個第六個字母。以第二個字母開頭的第二個第六個字母等等。

現在我該怎麼辦?

+0

這似乎是一項家庭作業。除了基本的建議,你可能不會獲得細節。 –

+0

大部分是。我正在尋找關於下一步的一個很好的解釋,而不是一個解決方案,就是我如何才能達到解決方案。 –

回答

1

您計算密鑰的每個字母的字母頻率表。如果在你的例子中,密鑰長度是6,你會得到6個頻率表。你應該得到相似的頻率,儘管不是用於相同的字母。如果你不這樣做,那麼你的密鑰長度是錯誤的。

現在您檢查英語的字母頻率表(例如,請參閱http://en.wikipedia.org/wiki/Letter_frequency)。如果圖案不匹配,則明文不是英文。如果是這樣,請將每個子文本中最頻繁的字母分配給頻率表中最頻繁的字母,然後查看您得到的結果。你應該注意到你的文本可能有稍微不同的頻率,參考表是基於大量數據的統計。現在你需要使用你的頭。

使用常見的二元語法(如英語中的th和sh)可以提供幫助。

-1

一種方法是頻率分析。拿六組中的每一組,爲每個角色建立一個頻率表。然後將該表與明文的已知頻率表進行比較(如果是標準文本,則這只是英文)。

第二種可能更簡單的方法是對每個字符進行暴力破解。可能的密鑰數量是26^6〜300,000,000,這是大約29位密鑰空間。這是暴躁的,但可能需要一些時間在個人電腦上。但是,如果你一次暴力化一個角色只需要26 * 6 = 156次嘗試。要做到這一點,編寫一個函數,可以對嘗試解密的明文「看上去像明文」進行「評分」。你可以像上面那樣做頻率分析,但是可以有更簡單的測試。然後對六組字符中的每一組進行暴力破解,然後選擇解密其中每一組的最佳解碼密鑰。