維吉尼亞密碼編碼器/解碼器(關鍵詞密碼)

在瀏覽器中完成維吉尼亞密碼的加密與解密,使用關鍵詞讓每個字母的偏移量隨位置變化。可用同一個關鍵詞互相加密與解密,並逐字元檢視轉換過程。所有處理均在瀏覽器本地完成,不會發送到伺服器。

使用提示

  • 維吉尼亞密碼曾被稱為"無法破譯的密碼"(le chiffre indéchiffrable),大約300年間沒有找到實用的破譯方法。
  • 由於關鍵詞會迴圈使用,關鍵詞越短,相同的偏移模式重複得越快,為密碼分析提供的線索也越多。關鍵詞越長通常越安全。
  • 空格、標點和數字會原樣輸出,不會消耗關鍵詞的位置,因此改變換行或空格的方式不會影響加密的規律性。
  • 加密與解密使用同一個關鍵詞,是對稱操作。點選"將結果作為輸入"按鈕,即可立即用解密模式驗證剛才的加密結果。
  • 輸出會保留原始輸入的大小寫(內部的偏移計算基於字母在字母表中的位置進行)。

常見問題

1863年,普魯士陸軍軍官弗里德里希·卡西斯基發表了"卡西斯基試驗",通過分析密文中重複子串之間的距離來推算關鍵詞長度,從而實現了系統性的破譯。如果已知部分明文,也可以通過已知明文攻擊來還原關鍵詞。

凱撒密碼對整段文字只使用一個固定的偏移量,而維吉尼亞密碼使用關鍵詞各字母對應的數值,對每個字母迴圈應用不同的偏移量。因此單純的頻率分析無法直接破解它,而這恰恰是凱撒密碼容易被破解的原因。

長期以來它被歸功於法國外交官布萊瑟·德·維吉尼亞,但實際上16世紀義大利密碼學家喬瓦尼·巴蒂斯塔·貝拉索早在1553年就發表了幾乎相同的方法。維吉尼亞本人後來因其著作而與另一種密碼產生關聯,這一歸屬其實是歷史上的誤傳。

該方法尋找密文中重複出現的相同子串,並取這些重複出現位置之間距離的最大公約數來推算關鍵詞長度。一旦知道長度,就可以對每個位置分別進行普通的頻率分析,相當於把問題拆解成若干個簡單的凱撒密碼來破解。

不需要,任何由字母組成的字串都可以作為關鍵詞,無論是否有實際含義。不過實際使用中人們常常為了方便記憶而選擇真實單詞,而這種可預測性反而有時會為卡西斯基試驗等破譯手段提供額外的線索。
ツールくん

閒話 ― 卡西斯基試驗如何攻破"無法破譯的密碼"

維吉尼亞密碼以16世紀法國外交官布萊瑟·德·維吉尼亞的名字命名,但他很可能並非其真正的發明者。早在1553年,義大利密碼學家喬瓦尼·巴蒂斯塔·貝拉索就已經發表了本質相同的方法:用迴圈使用的關鍵詞決定每個字母各自的偏移量。維吉尼亞本人後來因16世紀的著作而與另一種密碼產生關聯,這一誤傳直到19世紀才被廣泛固定下來,成為科學史上歸屬張冠李戴的一個典型案例。

凱撒密碼只使用一個固定的偏移量,機械式的恩尼格瑪密碼機則每次轉子轉動都會改變偏移量,而維吉尼亞密碼通過迴圈使用一個便於記憶的關鍵詞,實現了逐字母不同的偏移量。用單一偏移量加密的凱撒密碼,僅憑基礎的頻率分析就很容易破解;而維吉尼亞密碼在表面上抹平了字母出現頻率的分佈,因此直到19世紀中葉都被稱為"無法破譯的密碼(le chiffre indéchiffrable)",並在實際中被廣泛使用。

這一聲譽終結於1863年,普魯士陸軍軍官弗里德里希·卡西斯基發表了"卡西斯基試驗"。他通過測量密文中重複子串之間的距離,展示瞭如何推算關鍵詞的長度;一旦知道長度,就可以對每個位置使用與破解簡單凱撒密碼相同的頻率分析方法。這使得曾經實用了約三百年的密碼被系統性地攻破,成為密碼分析史上真正的轉折點。

有趣的是,如果關鍵詞與明文一樣長且只使用一次,維吉尼亞密碼在數學上就等價於理論上不可破譯的"一次性密碼本"。而實際運用中關鍵詞過短且被反覆使用,正是其真正的弱點所在,這一關於金鑰管理重要性的歷史教訓,至今仍影響著現代密碼學的設計。