常看電影的你,一定對「尼可拉斯‧凱吉」不陌生,不過小編可不是來評論這位好萊塢影星的。今天小編要帶大家解密「國家寶藏2:古籍秘辛」中,關鍵的古典密碼─Playfair Cipher。
.
Playfair加密法曾是英國軍隊在第二次波耳戰爭和第一次世界大戰時,所使用的加密工具,僅需一個5X5大小的矩陣即可快速加解密訊息。雖然古典密碼學的加密技術在現行系統中是不安全的,我們仍可以學習其設計的精神,當作生活中的小樂趣,或許你可以和朋友們建立一個好玩的對話方式。小編將介紹其中一版的Playfair,只要依循著基本的原理,也可以設計屬於自己的Playfair加密法喔!
.
首先,Playfair是將一字母串當中的兩兩字母對進行加密,而5X5大小的表格視為金鑰(Key),當中可再以五個字母的單字作為關鍵字(Keyword),將剩下的字母依序由左而右、上而下填滿,如下圖,左邊為原始版本,右邊為加入關鍵字版。
在「國家寶藏2:古籍秘辛」中的Keyword是「DEATH」,來自提示:The debt that all men pay. 每個人都無法逃過死亡。聰明的你一定發現26個字母怎麼塞得下這個表格呢?所以可以看到「I」與「J」出現在同一格,是因為一單字中很少同時擁有連續「I」與「J」的,你也可以將重疊的部分替換成其他不連續的字母喔。
.
接著,我們要認識下列三項加密規則,並以「Technology」為例:
1→ 加密字母位於同「列」時,依序往右加密。
2→ 加密字母位於同「行」時,依序往下加密。
3→ 加密字母位於「斜對角」時,依序往水平對角加密。
將欲加密的明文「Technology」,兩兩一對拆成「Te ch no lo gy」,再根據規則加密,如下圖。可得到密文結果為「HA IE OK MK NT」,其中遇到「I/J」時可任選,這裡小編選擇「I」。
.
最後,有兩點特別規則,且第一點優先於第二點,這邊我們以「AAA」為例:
★ 當欲加密的字母有同字元時,要在相同處加假字母(通常為X),如apple->apxple。
★ 當欲加密的字母數為奇數時,要在最後加入假字母,如hat->hatx。
將欲加密的明文「AAA」在相同字元中加入假字母,得「AXAXA」。總字母數為5是奇數,再滿足第二點特別規則後得「AX AX AX」。接下來,我們就可以跟著加密規則進行加密,如下圖可以得到最後密文結果為「FA FA FA」。
.
備註:解密部分則根據加密規則反推取得字母串,再將根據特別規則及英文基本常識判斷是否有假字母存在,將其消去後可得最初的明文。
Ref.
1. 維基百科-波雷費密碼
https://zh.wikipedia.org/wiki/%E6%B3%A2%E9%9B%B7%E8%B2%BB%E5%AF%86%E7%A2%BC
2. [研究] 密碼特展- (1)國家寶藏2 的playfiar加密法
http://mike0123783.pixnet.net/blog/post/32974942-%5B%E7%A0%94%E7%A9%B6%5D-%E5%AF%86%E7%A2%BC%E7%89%B9%E5%B1%95–%281%29%E5%9C%8B%E5%AE%B6%E5%AF%B6%E8%97%8F2-%E7%9A%84playfiar%E5%8A%A0%E5%AF%86%E6%B3%95