2013-05-03 72 views
-1

我有20個OTP密文,我知道只用19個不同的密鑰加密,所以1個密鑰已被重用。也只有兩個不同的消息具有相同的長度,被加密。如何檢測密鑰是否在一次性密鑰加密中被重用?

我知道如果我把兩個密文放在一起,如果他們共享相同的密鑰,我會消除密鑰。 所以我做了,所有人。但是現在我無法找到哪一對是共享密鑰的人。

有人可以幫助我,告訴我如何區分與其他人分享鑰匙的一對?

+1

這功課嗎?你對明文有什麼瞭解?如果明文與隨機無法區分(概念上:明文可以被認爲是用於加密20條消息的密鑰,其中兩個是相同的),則問題是不可能的。 – 2013-05-04 00:11:45

+0

是的,這是作業。明文是兩個相同長度的英文消息,沒有空格。所以明文可以隨機區分。我已經將所有密文拼湊在一起。一對應該與其他對象區分開來,因爲它是沒有密鑰的兩個明文的異或。我只是無法發現差異。 – mbp 2013-05-04 01:06:09

+0

我不確定我可以說你還不知道。答案應該是明顯的 - 特別是如果明文是字母數字8位ASCii ... – 2013-05-04 04:36:42

回答

1

XOR密文一起消除您建議的密鑰。結果將是兩個純文本XOR-ed在一起。

現在,它成爲檢測此數據中的模式的問題。通過檢查編碼可以做到這一點。 ASCII字母總是具有一定的位模式,例如, 'A'是十六進制的41或二進制的0100 0001,'a'是十六進制的610110 0001。所以如果XOR一起你會得到像0010 0000。注意高位數設置爲零。另請注意,兩個異或的ASCII編碼字母將以兩個零值位開始。

最後,文本使用了很多空格,這些空格使用十六進制的值20或二進制的0010 0000編碼。當與任何字母異或時,它將返回一個不同的情況,但結果仍然是一個字母。當與自己異或時,它將變成一個0000 0000的二進制值(就像任何編碼自己的XOR編碼的字符一樣)。

有了足夠的密文,就有可能獲得純文本和密鑰;只有2密文這可能無法實現。這可能是下一個任務。

0

一個想法是在使用XOR描述時消除關鍵字,然後將結果與plainttext可能包含和檢查輸出的內容進行異或。