解碼凱薩密碼會反轉原本的位移方向:以位移 3 編碼的訊息,會以位移 3 進行解碼,因為將每個 ASCII 字母向前移動三個位置的逆向操作,就是將每個 ASCII 字母向後移動三個位置。解碼器會使用模 26 運算,將位移標準化為介於 0 到 25 之間的值,然後從每個大寫或小寫 ASCII 字母中減去該值,而數字、標點、空格、表情符號、帶有變音符號的字元,以及 ASCII 拉丁字母以外的書寫系統則保持不動。循環換位會自動處理:從 A 減三會落到 X,從 B 減三會落到 Y,從 C 減三會落到 Z,因此解碼器永遠不會產生超出範圍的字母。由於解碼器會在 Decode 模式下自動反轉方向,因此你可以重複使用同一個位移數值,而不必手動輸入反向值 (26−N),所以不需要另外準備解密對照表。整個處理過程都在瀏器本機執行,因此文字不會被上傳到任何轉換 API。下方逐步示範的範例採用位移三,這是在密碼學參考資料中最常與凱薩連結、也是 Wikipedia 記載為古典案例 的位移值。

一個具體的位移 3 凱薩密碼解碼器範例
最常見的凱薩密碼解碼器範例使用位移三,因為這是在歷史記載中最常歸因於凱薩的位移。取明文 "HELLO WORLD" 並套用位移三。對每個 ASCII 字母在字母表中向前數三個字母,使用 A=1 到 Z=26 的編號方式:
- H (8) 向前三個字母到 K (11)
- E (5) 向前三個字母到 H (8)
- L (12) 向前三個字母到 O (15)
- L (12) 向前三個字母到 O (15)
- O (15) 向前三個字母到 R (18)
- W (23) 向前三個字母到 Z (26)
- R (18) 向前三個字母到 U (21)
- D (4) 向前三個字母到 G (7)
兩個單字之間的空格不是 ASCII 字母,因此它會完全保留在原來的位置,並且每個字母的大小寫也都會保留下來。編碼後的文字為 "KHOOR ZRUOG"。
現在用相同的位移三,對 "KHOOR ZRUOG" 執行解碼器。解碼器會從每個符合條件的字母中減去三個位置:
- K (11) 向後三個字母到 H (8)
- H (8) 向後三個字母到 E (5)
- O (15) 向後三個字母到 L (12)
- O (15) 向後三個字母到 L (12)
- R (18) 向後三個字母到 O (15)
- Z (26) 向後三個字母到 W (23)
- R (18) 向後三個字母到 O (15)
- U (21) 向後三個字母到 R (18)
- G (7) 向後三個字母到 D (4)
輸出結果是 "HELLO WORLD",與原始訊息完全相同。這就是讓凱薩密碼成為自身反函式的特性:用來編碼訊息的同一個數值控制項,也能用來解碼。
對於靠近字母表末端的字母,循環換位會變得明顯。在 A=1 到 Z=26、位移為三的情況下,X (24) 加上三等於 27,扣掉字母表大小後落到 A (1);Y (25) 加上三落到 B (2);Z (26) 加上三落到 C (3)。解碼器對每個符合條件的字元都套用相同的模 26 運算,因此循環換位不需任何特例處理或手寫的替換表就能正確完成。
常見的凱薩密碼位移及其特性
有幾個位移值出現得相當頻繁,學習者會將它們背起來。下表列出在閱讀、撰寫與解碼大多數凱薩密碼範例時,真正重要的位移值。
| 位移值 | 編碼方向 | 值得注意的特性 |
|---|---|---|
| 0 | 單位操作 | 文字原封不動地回傳 |
| 1 | 向前 1 | 部分參考資料中 "Caesar" 的位移 |
| 3 | 向前 3 | 歸因於凱薩的古典範例 |
| 13 | 向前 13 | ROT13;套用兩次會還原原文 |
| 25 | 向前 25 | 等同於向後一個位置 |
熟悉這些名稱能節省時間,例如謎題直接寫出 "ROT13",或你需要確認對方使用的是位移三而非從 26 種可能中隨意猜測時。位移十三是唯一在單一模式下表現為真正自我反函式的值,因為十三正好是二十六的一半;套用 ROT13 兩次會還原為原始文字,這就是它被廣泛用於線上爆雷與謎題提示的原因。
在密文範例上執行解碼器
從密文回到明文最快速的做法,就是使用瀏器版的凱薩密碼解碼器。開啟 凱薩密碼解碼器,貼上訊息,並在複製到其他地方之前先確認結果。完整的操作順序如下:
- 將編碼後的文字輸入或貼到文字欄位中。該欄位可接受混合大小寫、換行符號、標點符號,以及 ASCII 以外的字元,不會出現錯誤。
- 將模式從 Encode 切換到 Decode,讓頁面執行位移的減法而非加法。
- 從數值控制項中選擇位移。大多數謎題會直接告訴你數字;如果謎題只暗示 ROT13,則將位移設為十三。
- 點擊轉換按鈕。頁面會為每個 ASCII 字母計算反向位移,並在不將文字上傳的前提下,把結果顯示在輸出區域中。
- 在處理長篇文字之前,先用一小段可辨識的片段進行驗證。如果解碼後的輸出仍然毫無意義,多半是位移不對,或是該文字使用了不同的密碼。
變更來源文字、模式或位移會清除先前的結果,因此頁面絕不會讓你把舊的答案與當前設定混淆。空白輸入不會被處理,而數值控制項會將所選的位移限制在零到二十五的慣用範圍內。
解碼器保留與變更的內容
這項轉換的範圍刻意設計得很窄:只有 A 到 Z 以及 a 到 z 的字碼點會參與位移。每一個其他字元都會與輸入時完全一致地回傳。下表摘要說明每一類輸入的處理方式。
| 輸入字元類別 | 位移下的行為 |
|---|---|
| ASCII A–Z (大寫字母) | 進行位移;保留大小寫 |
| ASCII a–z (小寫字母) | 進行位移;保留大小寫 |
| 數字 0–9 | 保持不變 |
| 空格、定位字元、換行符號 | 保持不變 |
| 標點符號:. , ! ? ; : ' " - | 保持不變 |
| 帶有變音符號的字母,例如 é、ñ、ü | 保持不變 |
| 非拉丁文字:西里爾文、阿拉伯文、CJK、表情符號 | 保持不變 |
由於大寫與小寫是分開處理的,大寫的來源字元絕不會意外變成小寫,靠近被位移 ASCII 字母的帶變音符號字元也不會被悄悄轉寫。這讓混合語言的輸入變得可預期,也避免了假裝 26 個字母的規則能為其他字母表定義轉換的情形。換行符號在來回處理後得以保留,因此多行的編碼訊息會解碼回與原始訊息完全相同的段落排版。
閱讀已經解過的凱薩密碼解碼器範例
許多教科書與謎題書會以文字而非數字寫出凱薩密碼範例的位移。要解碼這類範例時,首先找出所述的位移;如果謎題寫的是「shift of three」或「Caesar's shift」,則將數值控制項設為三。如果謎題只提到「ROT13」,則設為十三。如果位移未知,就依序掃描 25 個非單位位移,尋找輸出能組成可辨識英文的那一個;凱薩密碼解碼器速查表列出每個位移的標準對應,如果你想要可列印的參考資料可以使用它。一旦確認正確的位移,將密文貼到解碼器中,選擇 Decode,然後讀取結果。在課堂示範時,同樣的流程反過來也行:先用位移三把熟悉的單字,例如 "HELLO" 編碼,向全班展示 "KHOOR",然後當場解碼以證明反函式關係。解碼器也能用來檢查教科書中已經解過的密碼範例:貼上書中的密文,設定書中所聲稱使用的位移,然後確認輸出與公布的明文一致。
當解碼後的輸出仍然看起來不對
如果解碼結果毫無意義,在假設密碼本身有問題之前,請依序進行幾項簡單的檢查。最常見的原因是位移錯誤;次常見的是方向錯誤。確認模式是設為 Decode 而非 Encode,因為再次編碼只會讓文字離原文更遠。確認該訊息確實是薩密碼,而非 Vigenère 密碼、Atbash 或替換表;這些密碼使用不同的規則,相同的位移控制項無法還原它們。空白輸入不會被處理,因此出現空白結果通常代表文字欄位被不小心清空了。最後,請記得解碼器不會自動偵測未知的位移、不會執行頻率分析,也不會驗證輸出是否是有意義的英文——這些是各自獨立的問題,需要各自的工具來解決。如果你的來源文字中混有數字或標點,請再次確認位移僅套用於 ASCII 字母,並確認那些字元在貼上後仍然完好無缺。
為什麼凱薩密碼不是真正的加密
凱薩密碼只有 26 種可能的位移,包含不變的位移在內,觀察者幾乎可以瞬間試每一種。對於任何長度超過一個句子的段落,字母頻率與可辨識的單字模式會在幾秒之內就揭露可能的明文。這種密碼不提供金鑰管理、認證、完整性檢查,也不保證機密性。它適用於課堂示範、解謎、密室逃脫的線索、地理藏寶的提示,以及輕量的文字混淆,但不適用於任何需要保持隱私的用途。切勿使用凱薩密碼來保護密碼、救援碼、私人訊息、客戶資料、認證權杖或財務細節。對於需要機密性的資訊,現代密碼學系統採用經過審閱的演算法、秘密金、認證加密,以及嚴謹的金鑰管理——這些都不是 26 個字母的位移能夠提供的。解碼器介面中的「encode」一詞,描述的是字母的轉換,而非安全性的聲明。
延伸閱讀:BCC 總和檢查範例:逐步 XOR-8 演練。