Hill 密碼是一種多字母替換密碼,由 Lester Hill 於 1929 年發明,它使用一個 2x2 的金鑰矩陣,在模 26 的算術下運算,一次加密兩個字母。解碼 Hill 密碼則是將每個密文向量乘以金鑰矩陣的模逆元(也取模 26),藉此反轉加密步驟,還原出原始的字母對。初學者通常會求助於 Hill 密碼解碼器,因為反矩陣的計算、字母到數字的對應、以及填補規則三者會互相影響,只要任何一項慣例不一致,就會產出看起來合理、實際卻解密成錯誤文字的結果。瀏覽器工具會在同一處處理模算術、A=0 到 Z=25 的對應、欄向量配對、以及 X 的填補,因此初學者可以先確認金鑰、測試一組已知的明文與密文對,再處理更長的訊息,而不必每次都重新推導數學。本文將帶領你逐步了解初學者必須確認的慣例、將資料輸入 Hill Cipher Decoder 的正確方式、能及早抓出錯誤的檢查點,以及此密碼本身的限制。

hill cipher decoder for beginners
Hill Cipher Decoder 入門:從哪裡開始

第一次使用 Hill 密碼的基礎觀念

Hill 密碼會以固定大小的區塊處理字母,而非一次一個字母。使用 2x2 金鑰時,每一對明文字母會被視為一個欄向量,乘以金鑰矩陣後再取模 26,便得到對應的密文對。解密則是反向操作:將每組密文對乘以金鑰矩陣的模逆元(同樣取模 26),以還原原始字母。因此這個密碼本質上是一組小型的線性方程系統,包裝在字母表之上,這也是為什麼每篇介紹文章都會提到矩陣運算。

對初學者來說,在打開任何工具之前,有三項背景知識必須先了解。第一,字母對應為 A=0、B=1,一直對應到 Z=25;在數學運算中不接受其他對應方式。第二,每個區塊包含兩個字母,因此長度為奇數的訊息在加密前必須先填補。第三,金鑰只有在行列式值與 26 互質時才可使用,否則矩陣不存在模逆元,解密結果也不唯一。事先掌握這三點,能避免大多數初學者首次嘗試手動解碼 Hill 密碼時遇到的困惑,也能說明解碼器為何會以特定方式運作。

每一個 Hill 密碼結果背後的慣例

工具與教科書答案之間的多數不一致,通常來自慣例差異,而非計算錯誤。在信任任何輸出之前,請先針對你比較的來源確認以下四項細節:

慣例本頁規則你可能遇到的其他做法
字母對應A=0、B=1、……、Z=25A=1、……、Z=26
向量方向兩個字母的欄向量兩個字母的列向量
區塊大小每個區塊兩個字母每個區塊三個或更多字母
奇數長度填補需要時附加一個 X不填補,或使用其他填充字元

即使可見的數字相同,只要改變向量方向或字母對應,就會產生不同的密文。Hill Cipher Decoder 會明確記載其慣例,讓你在信任較長的答案之前,能先比對工具行為與教科書是否一致。

使用 Hill Cipher Decoder 進行加密或解密

解碼器會在同一處處理矩陣乘法、模 26 化簡、X 填補以及反矩陣檢查。第一次使用時,請依序進行以下步驟:

  1. 確認慣例:你所比對的來源使用 A=0 到 Z=25 的對應、兩個字母的欄向量,以及奇數長度明文的 X 填補。
  2. 以兩個以分號隔開的列輸入 2x2 金鑰,例如 3 3; 2 5。請使用整數;負數與過大的數值會自動正規化到 0–25 的範圍內。
  3. 在貼上文字之前,先選擇 encrypt 或 decrypt。輸入文字後再切換模式也可以,但在模式與你的目的相符之前,結果是沒有意義的。
  4. 輸入或貼上你的 A-Z 訊息(加密)或密文(解密)。工具會在處理前移除空白、標點符號與數字。
  5. 執行轉換並複製結果。輸出僅包含大寫 A-Z;大小寫、空白、標點符號與數字皆不會保留。
  6. 在依賴較長輸出之前,先用預設金鑰對一組已知對(例如 HELP → HIAT)進行測試。

使用已知對驗證輸出

在信任解碼器處理長訊息之前,請先手動跑一次已知的單一對。本頁的預設金鑰為 3 3; 2 5,而典型的範例是明文 HELP 產生密文 HIAT。採用 A=0 到 Z=25 的對應以及欄向量乘法時,計算過程如下:

字母對 HE:H=7,E=4。第 1 列 = 3×7 + 3×4 = 33,而 33 mod 26 = 7 → H。第 2 列 = 2×7 + 5×4 = 34,而 34 mod 26 = 8 → I。字母對 LP:L=11,P=15。第 1 列 = 3×11 + 3×15 = 78,而 78 mod 26 = 0 → A。第 2 列 = 2×11 + 5×15 = 97,而 97 mod 26 = 19 → T。完整結果為 HIAT,與解碼器檢查的固定範例相符。

若你的手算結果與工具相符,代表慣例正確,便可繼續處理更長的訊息。若不相符,不一致之處幾乎必定指向不同的字母對應、列向量方向,或不同的填補規則,而非計算本身有誤。

會改變輸出的常見初學者錯誤

初學者通常會遇到相同的幾個問題。每一項都會產生看似合理、實際卻解密為錯誤文字的結果,因此及早辨識能省去大量困擾。

  • 將 A=0 與 A=1 混用。使用 A=1 會讓每個字母位移一個位置,使得即使數學內部一致,所有結果看起來都不對勁。
  • 使用列向量而非欄向量。Hill Cipher Decoder 使用 C = K × P,其中 P 為欄向量。改用列向量,即便矩陣數值看似相同,也會產生不同的密文。
  • 輸入行列式值不合法金鑰。若行列式值為偶數或 13 的倍數,矩陣沒有模逆元,解密結果將不明確。解碼器會直接拒絕這類金鑰,而不會回傳誤導性的輸出。
  • 信任解密後結尾的 X。加密時會在奇數長度明文後附加一個 X,但密碼本身無法區分真實的結尾 X 與填補用的 X。解碼器會保留結尾的 X,因為自動刪除可能會毀掉真實字元。
  • 假設空白會原樣保留。工具會在處理前移除空白、標點符號與數字。若你的練習題要求還原單字邊界,請自行另外記錄,切勿依賴輸出來恢復。

Hill 密碼的適用情境(與不適用情境)

Hill 密碼在歷史上具有重要意義,因為它是第一個將線性代數應用於多字母替換的公開系統,至今仍是模算術與可逆矩陣的標準教學範例。在課堂作業、解謎以及驗證金鑰行為方面,Hill Cipher Decoder 是實用的選擇:它能產生確定性的輸出、明確記載其慣例,並會在金鑰無效時直接拒絕而非猜測。八組標準固定範例涵蓋預設的 HELP 範例、奇數長度填補、零與最大的字母值,以及其他三組可逆矩陣,每組範例皆以雙向進行檢查。

就真正的機密性而言,Hill 密碼並不合適。其字母表較小、區塊大小固定、已知明文可破解其線性關係,而本頁更是直接公開了金鑰。若你需要保護密碼、權杖、個人資料或訊息,請使用經審核的認證加密機制,例如 AES-GCM,而非多字母的古典密碼。

若你想了解模逆元為何會以那樣的方式運作,Hill Cipher Decoder 數學指南 會逐步講解相同的矩陣運算。閱讀完畢後,你可以回到解碼器,並將其輸出視為你不再需要手動重做的反矩陣計算結果。

想進一步了解,請參閱 Rail Fence Cipher Decoder 入門:解開鋸齒狀密文。