凱薩密碼會將字母表中的每個字母位移固定數量的位置,這個固定數量稱為位移,而這個位移就是此密碼唯一使用的金鑰。由於英文字母表共有 26 個字母,因此恰好有 26 種可能的位移(包括 0,也就是讓原文保持不變),所以「不靠金鑰」解碼凱薩密碼實際上只有兩種意思:不是位移透過線索、標頭或解題範例間接告訴你,就是你必須逐一嘗試這 26 種可能,直到其中一個產生可讀的英文為止。一旦得知位移,解碼就和編碼執行相反的動作——每個符合條件的 ASCII 字母會透過模運算往回移動該位移,而大寫字母保持大寫、小寫字母保持小寫,其他所有字元(包括數字、標點、空格、表情符號,以及帶有變音符號或非拉丁字母)都會原封不動地保留。凱薩密碼解碼器會在你的瀏覽器中直接套用這個反向位移,讓你可以貼上密文、選擇你已辨識出的位移,並讀取還原後的明文,而無需上傳任何資料到遠端伺服器。

how to decode caesar cipher without key
how to decode caesar cipher without key

凱薩密碼的位移實際上在做什麼

凱薩密碼是最簡單的古典替換密碼之一,其機制在紙本上很容易理解。26 個英文字母中的每個字母都會被替換為距離它固定距離的另一個字母,當計數超出字母表末端時,會從 Z 繞回 A。以三這個位移——也就是古典凱薩值——為例,A 變成 D、B 變成 E、C 變成 F,以此類推一直到 X,而 X 會繞回 A、Y 繞回 B、Z 繞回 C。解碼則是套用反向移動:使用相同的位移,D 會回到 A、E 會回到 B,這就是為什麼解碼操作有時被描述為「減去位移」,而編碼則是「加上位移」。這兩個操作都是透過模 26 的模運算來執行,這正是「在字母表中繞圈而不是超出範圍」的正式說法。根據維基百科上凱薩密碼的總覽,這種構造方式已被使用超過兩千年,最早用於軍事訊息,至今仍是課堂上的標準範例。其基本概念與開源的cryptii 凱薩密碼實作背後的邏輯相同,也就是先將每個字碼點分類為大寫、小寫或保持不變,再透過模運算進行位移。

少數幾個位移因為經常出現而有了特定名稱,熟悉它們可以節省時間:

位移值常見名稱行為
0恆等沒有變化;此密碼是無操作。
1向前一位A 變成 B,Z 繞回 A。
3古典凱薩歸因於尤利烏斯·凱撒的傳統數值。
13ROT13自我反轉:套用兩次即可還原原始的 ASCII 字母。
25向後一位A 變成 Z,與位移 1 相反。

因為只有 26 個候選值(包括保持不變的位移),每一則凱薩密碼訊息都屬於一個非常小、可完全枚舉的集合。正是這個單一事實讓「不靠金鑰」在實務上變得可解:搜尋空間小到足以窮舉。

未給定金鑰時如何找出位移

實務上的「不靠金鑰」其實有兩種情境,而差異會改變你的作法。第一種情境是,位移透過密文本身以外的脈絡傳達給你:謎題標頭可能寫著「位移七」、密室逃脫的卡片可能顯示羅馬數字 VII,或寄件者可能在某處留下解題範例。在這種情況下你其實已經擁有金鑰——只是沒有以數字形式看到。第二種情境是,沒有任何東西告訴你位移,你必須自行找出來。因為只有 26 種可能(包括保持不變的位移),最可靠的方法就是依序嘗試每個位移,並檢查結果是否可讀。如果是短短一段文字,肉眼在一分鐘內就能完成;如果是較長的文字,可讀的英文與亂碼之間的差異會在前幾個字之內就顯而易見。

有時候會有人提到頻率分析作為另一種方法。其概念是:英文具有特徵性的字母頻率——E、T、A、O、I、N 較常見,而 Q、X、Z 較罕見——因此只要計算夠長密文中各字母的出現次數,出現最多次的字母很可能就是位移過的 E,而把該字母映射回 E 的位移就是你的金鑰。原則上這套方法可行,但對於短訊息來說,頻率過於雜訊而不可靠,而瀏覽器工具可以在單次處理中跑完所有 26 種位移,通常會比手動計算更快。針對更進階的密碼(例如維吉尼亞密碼解碼器)所設計的工具,需要獨立的循環金鑰,並不能在此替代使用,因為它們無法自行破解單一字母表的凱薩位移。

使用凱薩密碼解碼器解讀文字

一旦知道位移,實際解碼步驟只需要一瞬間。凱薩密碼解碼器在網頁中於本機執行反向位移,因此不會有任何文字離開你的電腦,並且會保留換行、大小寫以及所有非字母字元,只對 ASCII 的 A–Z 和 a–z 套用模運算。若要使用你已辨識出的位移(但手上沒有金鑰)來解碼凱薩密碼,請依照下列步驟:

  1. 在凱薩密碼解碼器頁面的文字欄位中輸入或貼上密文。
  2. 將模式設為 Decode(解碼)而非 Encode(編碼),讓位移以反向執行。
  3. 使用數字控制項選擇你已辨識出的位移,範圍從 0 到 25。
  4. 選擇轉換按鈕,並在結果區域中讀取還原後的明文。
  5. 如果需要將結果貼到其他地方請複製;換行會被完整保留。

一個快速的解題範例:使用位移三時,密文「KHOOR ZRUOG」會解碼為「HELLO WORLD」,因為 K 往回移動三個字母變成 H、H 變回 E、O 變回 L、R 變回 O,相同的對應套用於其他所有字母,而兩個單字之間的空格則原封不動。如果解碼出來是亂碼,位移幾乎肯定是錯的,或者這段文字根本是由其他不同的密碼產生,這種情況下暴力破解所有 26 種位移並無幫助,必須使用更通用的工具。至於在 Linux 上無需撰寫程式碼的命令列替代作法,實用的在 Linux 中解碼凱薩密碼的逐步指南使用系統工具涵蓋了相同的操作,可能更適合偏好終端機工作流程的讀者。

工具會保留什麼、改動什麼

解碼器採用刻意設得很窄的規則:只有 52 個 ASCII 字母會參與位移,其他所有字碼點都會原封不動地通過。這表示空格、換行、數字、標點、撇號、表情符號、帶有變音符號的拉丁字元(例如 é 或 ñ),以及任何 ASCII 拉丁字母以外的書寫系統——如西里爾字母、希臘字母、阿拉伯文、中文、日文等——在輸出中都會與輸入時完全一致。大小寫也會獨立處理,因此來源中的大寫 A 在結果中會對應為大寫字母,絕不會被意外降為小寫。下表彙整了這項規則:

字元類型解碼時的行為範例
ASCII 大寫 A–Z依所選值進行位移位移 3 時,D → A
ASCII 小寫 a–z依所選值進行位移位移 3 時,k → h
空格與換行完整保留" " 保持 " "
數字 0–9完整保留"7" 保持 "7"
標點與符號完整保留"?" 保持 "?"
帶變音符號及非拉丁字母完整保留"é" 保持 "é"
表情符號及其他字碼點完整保留"😀" 保持 "😀"

解碼器也會在輸入文字、模式或位移變更時清除先前的結果,以避免將舊的答案誤認為是當前設定所產生的結果。空白的輸入不會被處理,而數字控制項會將位移限制在 0 到 25 的慣用範圍內,因此不會有輸入某個數值而破壞模運算的風險。當輸入混用多種語言或包含程式碼片段時,這種可預測性特別有用,因為只有 ASCII 拉丁字母會移動,其他所有內容都會固定在原位。

為什麼凱薩密碼並非真正的加密

凱薩密碼是一道學習用的謎題,也是密碼學史的一個章節,而不是保護資訊的方法。它只有 26 種可能的位移(包括保持不變的那一個),觀察者幾乎可以在瞬間對短密文嘗試每一種組合。字母頻率分析甚至可以揭露較長段落的可能明文,因為這種替換對於底層語言的統計結構毫無掩飾作用。現代安全性仰賴經審核的演算法、秘密金鑰、已認證加密以及嚴謹的金鑰管理;而一個源自西元前一世紀的固定單字母替換完全沒有提供這些東西。因此凱薩密碼解碼器適用於課堂示範、地理尋寶提示、密室逃脫線索、解謎以及輕量級的文字混淆,絕不應用於保護密碼、還原碼、私密訊息、客戶資料、驗證 token 或財務細節。在上述任何情境中,真正的加密工具(例如 AES 加密頁面)才是合適的選擇,因為它使用經審核的演算法與已認證加密,而非單一的固定字母表位移。

其他值得認識的編碼工具

解碼是一個涵蓋許多不同格式的通用詞彙,而凱薩解碼器並不能與它們互換使用。針對需要可安全傳輸的文字形式之位元組,Base64 編碼 / 解碼工具是正確的選擇。針對點與劃,摩斯密碼翻譯器除了文字轉換外還能處理音訊播放。針對 URL 元件的跳脫,URL 解碼器能安全地對查詢值進行百分比編碼與解碼。針對位移為 13 的 ROT13 特殊情況,ROT13 編碼 / 解碼器則無需設定數值位移即可套用相同的邏輯。這些工具各自解決特定的編碼問題,沒有任何一個能替代真正的密碼學,因此挑選正確工具的第一步,就是辨識眼前訊息真正的格式。

如需更深入的了解,請參閱A1Z26 密碼代碼:將字母編碼與解碼為數字