如何在沒有密鑰的情況下找到兩個加密(Vernam Cipher)文本的原始消息
如果可能,我可以獲得步驟或解決方案嗎?
閱讀以下文章後,我想我已經得到了解決方案:
以及上面/下面@Emme的答案,我提出了這個解決方案:
設 M1 和 M2 為原始消息。
S1 ⊕ S2 = M1 ⊕ M2 since R is the same for S1 and S2
我們計算 S1 ⊕ S2
S1 ⊕ S2 = 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1
由於該語言只有兩個單詞
A
and ,我可以通過隨機組合andB
來猜測 的值。M1``A``B
let M1 = AABBBA
. 轉換M1
給M1 = 111 111 0000 0000 0000 111
讓,
S1 ⊕ S2 = S3
. 然後,M1 ⊕ S3 = M2
我們計算 M1 ⊕ S3
M1 ⊕ S3 = 111 0000 111 111 0000 0000
所以,
M2 = M1 ⊕ S3 = 111 0000 111 111 0000 0000
解碼
M2
給出M2 = ABAABB
因此,
M1 = AABBBA
和M2 = ABAABB
證明
記住我們說過
S1 ⊕ S2 = M1 ⊕ M2 since R is the same for S1 and S2
如果我們計算
M1 ⊕ M2
,我們將有:與上面看到111 111 0000 0000 0000 111 ⊕ 111 0000 111 111 0000 0000 = 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1 1
的相同S1 ⊕ S2
你知道給你的兩個密文形成為 $$ C_1 = S_1 \oplus R\C_2 = S_2 \oplus R $$同 $ R $ 在這兩種情況下。所以你可以擺脫 $ R $ 通過計算$$ C^\ast = C_1 \oplus C_2 = S_1 \oplus S_2 $$ 然後你知道只有兩個字, $ 111 $ 和 $ 0000 $ . 因此,在 $ C^\ast $ $ 1 $ 只有當一個句子包含 $ A $ 而另一個包含 $ B $ . 從那裡,由於這兩個詞有不同的長度,你應該能夠確定候選句子。