一個 2x2 Hill 密碼解碼器需要四個密鑰整數、一個將 A=0 到 Z=25 對應起來的欄向量慣例,以及一個行列式與 26 互質的矩陣;Hill Cipher Decoder 完全在您的瀏覽器中套用該慣例,因此它取代了腳本端點、Python 函式庫和 C 命令列工具,而無需將密文或密鑰傳送到任何伺服器。本頁將 A=0、B=1、……、Z=25 進行對應,將標準化後的文字分割成兩個字母的欄向量,將每個向量乘以所提供的 2x2 密鑰,並將兩個結果皆模 26 化以產生密文。同一介面透過將每個密文對乘以密鑰的模逆元來反轉該過程,而該模逆元僅在密鑰矩陣的行列式與 26 互質時才存在。這最後一個要求正說明了為什麼一個不可逆的密鑰——例如行列式為偶數的密鑰——會被預先剔除,而不是靜悄悄地回傳垃圾結果。由於整個計算皆在本機執行,學習者或解題者可以貼上密文、輸入已知密鑰,並在信任較長段落的輸出之前,根據已知的明文-密文對(例如 HELP 在預設密鑰 3 3; 2 5 下會變成 HIAT)來核對明文。

為何瀏覽器工具勝過 Hill 密碼端點
大多數已發布的 Hill 密碼輔助工具可歸入以下三類之一:具有速率限制和身份驗證的伺服器端 REST 端點、用 Python、C 或 Java 編寫且必須安裝和匯入的函式庫,或是僅能單向處理的小型獨立腳本。這些途徑各自帶有與密碼本身無關的設定成本。REST 端點需要 API 金鑰、基礎 URL,通常還需要一個圍繞小型載荷的 JSON 包裝。Python 函式庫需要執行環境、虛擬環境,以及足夠的樣板程式碼來匯入模組、解析密鑰、標準化文字,並依序呼叫加密和解密函式。C 或 Java 程式則需要編譯旗標,以及將文字導入和導出二進位檔的方式。
Hill Cipher Decoder 將所有這些整合到單一頁面中。沒有安裝步驟、沒有 API 金鑰、沒有 JSON 信封,也沒有編譯器。您輸入四個密鑰值作為以分號分隔的兩列,選擇加密或解密,貼上 A–Z 文字,然後讀取結果。沒有任何資料會離開瀏覽器分頁,這對於密文應保持私密的課業和謎題很重要,也適用於您不想為了核對一對字母而啟動整個開發環境的練習。同一頁面既可解密教師的範例,也可加密學生的回覆,因此您無需在心中或終端機中維護兩條獨立的程式碼路徑。
本頁使用的精確慣例
慣例是 Hill 密碼「答案錯誤」抱怨的最常見單一原因,所以本頁在您提交任何內容之前,以簡明的措辭記錄其規則。字母對應方式為 A=0、B=1、C=2、……、Z=25。文字會去除空格、標點、數字以及任何非 A–Z 的字元;僅處理剩餘的字母,輸出則一律為大寫 A–Z。字母會被分組成兩個字母的欄向量,因此訊息 HELP 會變成欄向量 [7, 4],接著是 [11, 15]。密鑰以 a b; c d 形式作為 2x2 矩陣輸入,這代表第一列是 a b,第二列是 c d。加密公式為 C = K · P,其中 P 為欄向量:對於一對 (x, y),密文對為 (a·x + b·y, c·x + d·y),每個結果皆模 26 化。
從該公式衍生出另外兩條規則。首先,如果標準化後的明文長度為奇數,則在輸入末尾附加一個單獨的 X 再進行分組;產生的密文長度必為偶數,但解密後實際以 X 結尾的明文將無法與填充字母區分開來。其次,密鑰必須模 26 可逆,這代表行列式 a·d − b·c 必須與 26 互質。與 26 共享因子 2 或 13 的行列式——例如 0, 2, 4, 6, 8, 10, 12, 13, 14, 16, 18, 20, 22, 24, 26——所產生的密鑰無法唯一地反轉,因此本頁會拒絕它們,而不是回傳誤導性的半解密結果。
在瀏覽器中解碼 Hill 密碼
若要手動解密 2x2 Hill 密碼,您通常需要計算密鑰的模逆元、將每個密文對乘以該逆元,並將結果模 26 化。計算器會為您精確地遵循該路徑。第一次處理來自教師、教科書或謎題的密文時,請依照下列步驟操作。
- 確認對方使用 A=0 到 Z=25 的對應方式、兩個字母的欄向量,以及針對奇數長度明文的單 X 填充規則。如果他們描述的是不同的對應或不同的區塊大小,您面對的就是不同的密碼。
- 開啟 Hill Cipher Decoder,並以分號分隔兩列的方式輸入密鑰,例如 3 3; 2 5。系統接受負數和大於 25 的值,並將其標準化至 0–25 的範圍。
- 選擇解密,然後以不帶空格的大寫 A–Z 字母貼上密文。如果標準化後的密文不包含偶數個字母,本頁會拒絕輸入而不進行猜測。
- 點擊轉換按鈕並讀取標準化後的輸出。輸出僅包含大寫字母;任何原始的空格、標點或數字皆不會被還原。
- 在信任較長的訊息之前,請使用已知的明文-密文對來驗證工具。在預設密鑰 3 3; 2 5 下,明文 HELP 會變成密文 HIAT:H=7、E=4 得出 (3·7 + 3·4, 2·7 + 5·4) = (33, 34),模 26 化後為 (7, 8) = HI;L=11、P=15 得出 (3·11 + 3·15, 2·11 + 5·15) = (78, 97),模 26 化後為 (0, 19) = AT。如果您的計算與該對不符,則差異幾乎總是慣例差異,而非瀏覽器算術錯誤。
- 如果在解密文字中出現結尾 X,請使用加密前記錄的原始訊息長度來判斷它是填充字母還是真實字母;本頁會保留該 X 不動,以避免靜默地銷毀真實字元。
若要加密,請在步驟 3 中切換方向。輸入明文,選擇加密,本頁會自動以 X 填充奇數長度的輸入。輸出為大寫 A–Z 密文,可直接與使用相同密鑰和慣例的任何人分享。
當解密結果看似錯誤時
Hill 密碼看似錯誤的結果,幾乎總是源自以下三個原因之一:不同的字母對數字對應、不同的向量方向,或不同的填充規則。有些參考資料從 A=1 開始而非 A=0,這會使每個數字皆偏移 1 並打亂輸出。其他資料則將兩個字母對視為列向量並從右側相乘,這會使密鑰轉置。還有些資料使用隨機字母而非固定的 X 進行填充。本頁無法偵測對方使用的是哪種慣例;它能做的是清楚地記錄自身的慣例,而這正是前一節的內容。如果教師的答案針對相同的可見數字給出不同的密文,請將其視為詢問對方遵循何種慣例的訊號。
第二常見的問題是結尾的 X。只要標準化後的明文長度為奇數,加密便會加上 X。解密無法判斷該 X 是填充字母還是訊息末尾的真實字元,因此本頁會將其保留不動。如果您在加密前已記錄原始明文,請將解密後的長度與該記錄長度進行比較,唯有在去掉結尾 X 後長度相符時,才將其移除。
第三個問題是密鑰遭拒。如果本頁以明確的錯誤訊息拒絕您的密鑰,代表您矩陣的行列式與 26 不互質,這意味著不存在模逆元,且該密鑰的解密結果並不唯一。請選擇行列式為 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 或 25 的其他密鑰再試一次。為保持互動的響應速度,系統也會拒絕空的標準化輸入以及超過 100,000 個標準化字母的密文。
Hill 密碼在 2026 年的局限
Hill 密碼在密碼學歷史中具有重要意義,因為它是最早將線性代數應用於多字母代換的密碼之一,以兩個字母的區塊取代了單位素代換。這種歷史意義同時也是其現代弱點的根源。字母表僅有 26 個字母,區塊大小僅為 2,整個轉換在模 26 的整數上為線性。任何能猜測或還原出單一明文-密文對的人,都會得到關於四個未知密鑰條目的兩個線性方程式,而第二對通常就能完全釘住密鑰。對任何區塊大小為兩個字母的 Hill 密碼而言,已知明文攻擊都是實際可行的,這正是為什麼沒有任何現代安全協定直接採用此構造的原因。
本頁在介面中公開密鑰,於本機處理資料,旨在用於教學、作業、解謎及休閒性的密碼學練習。它不適合用於密碼、身份驗證權杖、個人資訊、檔案或任何正式的訊息傳遐。若需真正的機密性,請使用經審查的認證加密機制,例如 AES-GCM,並搭配絕不與密文一同傳輸的密鑰。2x2 Hill 密碼仍然是學習矩陣乘法、模逆元與區塊密碼如何搭配的絕佳方式,而本計算器是無需架設伺服器即可驗證學習成果的最快途徑。
Comparing Hill Cipher Endpoints vs This Tool
The table below summarizes where a typical Hill cipher API or library adds friction relative to the browser-based Hill Cipher Decoder. Use it to decide which approach matches the task in front of you.
| Concern | Typical Hill cipher API or library | Hill Cipher Decoder |
|---|---|---|
| Setup | Install a runtime, import a library, or register for an API key | Open the page in a browser |
| Network traffic | Ciphertext and key are sent to a remote endpoint | Everything is processed locally |
| Convention control | Varies by library; row vectors, A=1, or other rules are common | Explicit A=0 column-vector convention documented on the page |
| Key validation | May return misleading text for non-invertible keys | Rejects keys whose determinant is not coprime with 26 |
| Input size cap | Depends on server quota or memory limits | 100,000 normalized letters |
| Direction switching | Often two separate functions or endpoints | Single encrypt or decrypt toggle |
| Known-pair check | Usually not built in | Default key turns HELP into HIAT for quick verification |
For a one-off decryption, a homework check, or a puzzle clue, the in-browser approach removes every line of glue code that an API would otherwise require. For a production pipeline that already speaks REST and needs to batch-process thousands of messages, a tested library still has its place — but it should wrap a modern cipher, not the historical Hill construction.
If you're weighing options, Rail Fence Cipher Decoder API Alternative Without a Server covers this in detail.
If you're weighing options, How to Decide If a ROT47 Encoder Decoder Is Right for You covers this in detail.