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

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

什麼是維吉尼亞密碼(Vigenère Cipher)

維吉尼亞密碼(Vigenère Cipher,關鍵詞密碼)是一種多表式換字密碼,它利用關鍵詞的每個字母,為明文的每個字母分別確定不同的偏移量。與凱撒密碼對整段文字只使用一個固定偏移量不同,維吉尼亞密碼會將關鍵詞迴圈重複到與明文等長,再用對應位置關鍵詞字母所代表的數值(A=0、B=1……)來偏移相應的明文字母。本工具同時支援"加密"(由明文和關鍵詞產生密文)與"解密"(由密文和關鍵詞還原明文),並會逐字元展示轉換過程。

只要使用同一個關鍵詞,加密與解密就是互為鏡像的對稱操作,只是輸入輸出的方向不同。所有計算都在瀏覽器本地完成,你輸入的明文、密文和關鍵詞都不會被傳送到任何伺服器。無論是想弄懂原理的學習場景,還是模擬真實通訊的驗證場景,都可以使用這個工具。

維吉尼亞密碼編碼器/解碼器的使用方法

  1. 選擇模式 想把明文變成密文就選擇"加密",想把密文還原成明文就選擇"解密"。
  2. 輸入文字 加密時輸入明文,解密時輸入密文。非字母字元會原樣保留在結果中。
  3. 輸入關鍵詞 關鍵詞只能由字母組成,加密與解密必須使用完全相同的關鍵詞。
  4. 執行並檢視結果 點選"執行"後,結果欄會顯示轉換後的文字,明細表中可以逐字元檢視所套用的偏移量。
  5. 嘗試反方向 使用"將結果作為輸入"可以把剛加密的結果直接送入解密模式,驗證往返是否一致。

用好本工具的小技巧

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

維吉尼亞密碼的應用場景

密碼學的學習與練習

無論是課堂學習還是自學,都能親手用真實字串驗證多表式換字密碼的原理,而不只是停留在理論層面。

製作卡西斯基試驗的練習素材

自行指定明文和關鍵詞產生密文,再把它作為推算週期、還原關鍵詞的解密練習題材。

製作解謎遊戲的密文

在密室逃脫或解謎遊戲中,可以快速做出比凱撒密碼更難破解的提示文字。

重現歷史上的加密方式

按照19世紀軍事與外交通訊中實際使用過的步驟,重新體驗當時的加密流程。

維吉尼亞密碼相關術語

關鍵詞密碼
指反覆使用固定關鍵詞來決定每個字母偏移量的密碼方式統稱。關鍵詞越長、越不規則,通常越難被破解。
多表式換字密碼
對同一套明文字母表使用多張換字表的密碼方式。維吉尼亞密碼相當於按關鍵詞字母個數在多個凱撒密碼之間切換使用。
維吉尼亞方陣
一張列出全部偏移模式的26×26表格,歷史上用於手工加密與解密。行對應關鍵詞字母,列對應明文字母。
已知明文攻擊
在已經掌握部分密文對應明文的前提下推算金鑰的解密手法。問候語等固定開頭常常成為這類攻擊的線索。
密碼強度
指密碼抵抗被破解的程度。維吉尼亞密碼的強度主要取決於關鍵詞的長度與不規則程度,關鍵詞越短、重複得越頻繁,就越容易暴露週期性而被削弱。
一次性密碼本
使用與明文等長且只用一次的隨機金鑰的加密方式。若把維吉尼亞密碼的關鍵詞換成這樣的一次性隨機金鑰,理論上就無法被破解。

常見問題

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

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

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

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

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

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

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

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

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

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