給定一對由它加密的(明文,密文)破解多字母密碼
最初的問題僅說明使用了經典密碼,我將闡明 1)為什麼我認為使用多字母替換密碼和 2)我到目前為止的嘗試。
問題
c1 = rhlxhei rb niu ir-wbbxug "qeejv," rgj mbfo sdg m1 = friends by the so-called "posts," but they can c2 = fypx pd jkx teoyde nupyd wbd hhtfmo yqvlfqeu m2 = ?
使用哪種類型的密碼
- 如果是轉置密碼,那麼對於每個字元,它在明文和密文中出現的次數都應該相同。(矛盾)
- 它是一個單字母替換密碼,明文中的相同字元應該映射到密文中的相同字元。(矛盾)
因此,它應該是一個多字元替換密碼。
我的嘗試
IC(重合指數)
我在Google上搜尋到,巧合索引可以用來猜測密鑰長度,但這是基於密文的長度在統計上足夠長。
計算偏移量
然後我意識到,如果使用Vigenère 密碼,那麼對於 and 的每個字元
m1
,c1
我可以計算它們之間的偏移量,並找出偏移量中的重複模式。為了清楚起見
offsets[i] = (c[i] + 26 - m[i]) % 26
, 和offsets
列印在下面
12 16 3 19 20 1 16 16 3 20 1 16 16 3 20 1 16 12 16 3 1 16 12 16 3 16 12 16 19 20 1 16 16 3 19
然而,有兩個困難。
- 儘管有一些重複的數字(例如 16、19、1 等),但我未能從偏移量中提取確切的模式。
- 如果我直接將這些偏移量(反向)應用於
c2
,結果沒有意義(m2 = rosq qt mey jhiztq qvfkt mnt bijvph otofggux'
),所以我想知道明文是否以某種方式合併到密鑰中。如果上述過程有些錯誤,請糾正我,如果有某種方法可以利用已知的 (
c1
,m1
) 對,請指導我。謝謝!
我喜歡玩給出單詞邊界的密碼!
看著 $ c_1 $ 和 $ m_1 $ ,從明文字元到密文字元的移位距離僅取以下值: $ \big[ 1, 6, 7, 10, 14, 23, 25 \big] $ .
如果字元位置被標記 $ 0, \dots, 34 $ 在 m1/c1 中,每個位置 ( $ i \mod 5 =0 $ ) 有一個轉變 $ 1 $ , 除了職位 $ 0 $ 和 $ 25 $ .
idx=> 1 2 3 0123456 78 901 23 456789 01234 567 8901 234 c1 = rhlxhei rb niu ir-wbbxug "qeejv," rgj mbfo sdg ? | | | | ? | m1 = friends by the so-called "posts," but they can c2 = fypx pd jkx teoyde nupyd wbd hhtfmo yqvlfqeu m2 = o s m a e
使用這兩個假設和列表 $ 10000 $ 最常見的英語單詞為每個單詞產生少量可能性。
['give' 'live' 'time'] ['on' 'or'] ['guy' 'ill' 'the' 'try'] ['social'] ['media'] ['can' 'car' 'tan' 'van'] ['really'] ['increase']
選擇似乎有意義的詞會產生:“社交媒體上的時間真的可以增加”。
在研究帶有一些未加密字元(例如空格和標點符號)的 Vigenère 類型密碼時,要問的一個明顯問題是這些未加密字元是否仍然推進關鍵字位置。
你似乎假設他們沒有。在這種情況下,相反的假設可能更有成效。(當然,一般來說,唯一真正知道的方法是嘗試兩種方法,看看哪一種效果更好。)
以這種方式獲得的關鍵字似乎與我所知道的任何語言中的真實單詞都不匹配,即使在考慮了 A=0 與 A=1 之類的變化或使用減法與加法之後也是如此。但它確實解密了明文。