如何使用部分密鑰解碼 Playfair 消息?
我收到了一條 Playfair 加密消息和一個部分密鑰,其中缺少一些關鍵字母:
- 損壞的鍵(
?
代表失去的字母):?ENVGQ?RKBDXACU?LIOW
- 密文:
LGOXMVYHIMISYSSQWMZX
我試圖自己解決這個問題並得到了 plaintext
WELCHOQLHNLRBHED
,這顯然是錯誤的。我可以使用哪些方法來解碼此消息?
快速而骯髒的方法是編寫一個電腦程序來嘗試
?
位置中所有剩餘的可能關鍵字母並列印出結果明文。希望其中一個會脫穎而出,因為它顯然是正確的。請記住,每個字母在 Playfair 鍵中只能出現一次,並且您的鍵已經很長,因此字母表中沒有很多未使用的字母用於未知位置。稍微更聰明的方法(這可能是您應該使用的)是首先查看是否已經可以在不知道失去的關鍵字母(或最後一行的任何字母)的情況下解碼任何密文字母對關鍵矩陣,因為它們顯然也依賴於失去的字母)。您可以手動執行此操作(再次,大概是預期的方法,因為這是您實際學習 Playfair 密碼如何工作的方式),或者您可以作弊並使用任何標準 Playfair 解碼器工具,然後嘗試幾種不同的變體鍵並查看明文的哪些字母發生了變化。
例如,下面是嘗試解碼消息(使用這個線上解碼器)的結果,其中有幾個不同的缺失字母選擇,在鍵中不存在的八個字母(
F
、H
、M
、P
、S
、T
和)中:Y``Z
Ciphertext: LG OX MV YH IM IS YS SQ WM ZX Decoded with ??? = FHM: WE LC OF SK LW LT TP PH OW SU Decoded with ??? = PST: WE LC YN MF AI LR HK QB IZ HU Decoded with ??? = TYZ: WE LC PN EL AI WM BH FB IS LD
您可以嘗試更多選擇,但這裡應該明顯的是,解碼前兩個字母對顯然不受失去的關鍵字母的影響,因此,明文以字母開頭
WELC
。現在,以這些字母開頭的英語單詞並不多——事實上,我只能想到一個非常可能的單詞。假設明文以“Welcome”開頭,您現在可以排除任何可能導致
MV
解密為OM
. 即使這還不足以完全解決問題,你至少應該能夠鎖定更多的明文字母,這樣就有希望猜出更多明文中的單詞,從而獲得更多已知的明文字母對,等等。事實上,如果您考慮 Playfair 密碼的工作方式,知道
OM
encrypts toMV
會立即告訴您一些有用的資訊:即字母V
,M
和O
必須全部出現在同一行或同一列中,並且它們必須相鄰並按照特定的順序。在這種情況下,查看關鍵矩陣:? E N V G Q ? R K B D X A C U ? L I O W ? ? ? ? ?
這告訴您,要使此明文/密文對正確,
M
必須出現在最後一行的第四列中,即 belowO
和 aboveV
。(請記住,行和列是環繞的。)不幸的是,使用標準的 Playfair 鍵矩陣設置,鍵中剩餘的任何字母都按字母順序簡單地附加,*沒有辦法
M
簡單地通過填寫?
鍵中的標記來進入該位置!*所以要麼:
- 我猜第一個明文單詞應該是“歡迎”是錯誤的,
- 密文包含錯誤(總是可能的,儘管希望在精心設計的加密謎題中很少見),
- 密鑰實際上比我們給出的要長,我們也應該任意分配最後一行的剩餘五個字母,或者
- 還有一些有趣的事情發生了,畢竟這不是標準的 Playfair 密碼。
如果我們假設上面的#3,並開始洗牌最後一行的字母,實際上有可能得到一個以“歡迎”開頭的純文字,其餘部分看起來至少有點像英語(儘管顯然不夠我清楚地宣布它是正確的解決方案,而不知道謎題來自哪里以及可能有哪些其他線索)。所以,唉,我無法確定這些步驟是否會為您的難題提供正確的解決方案。但至少它們確實說明了解決此類問題的一般方法。