跳至主要內容
Lizely

Hill Cipher 解碼器

使用可逆的 2 以 2 Hill 條碼矩陣與明確的 modulo-26 約定,對 A-Z 文字進行加密或解密。

隱私權:你的檔案不會離開裝置,所有處理均在瀏覽器本機完成。

使用方式

  1. 1.確認練習使用 A=0 至 Z=25、兩字母列向量與 X 填充。
  2. 2.輸入兩行矩陣,選擇加密或解密,並提供 A-Z 訊息或密文。
  3. 3.執行轉換,並先比對已知對例如 HELP 到 HIAT,再依賴較長的輸出結果。

關於Hill Cipher 解碼器

Hill Cipher Decoder 是一個教學用途的實作,基於 Lester Hill 的代數密碼,針對兩字母塊設計。請輸入一個 2 × 2 的金鑰矩陣,以分號分隔兩行,選擇加密或解密,所有文書處理皆在瀏覽器中完成。預設金鑰為 3 3; 2 5,將 HELP 轉換為 HIAT,此為本頁所說明的規則。

該工具將 A 對應至 0、B 對應至 1,一直到 Z 對應至 25。它會移除空白、標點符號與數字,將剩餘字母分組為長度為二的列向量,乘以金鑰矩陣,並將結果模 26。加密時,若明文長度為奇數,僅追加一個 X。此工具不會保留格式,也無法判斷最終的 X 是否為填充字元。

矩陣的規則至關重要。部分參考資料將字母向量置於行向量,或以不同順序排列金鑰值,導致相同數值輸出的密文不同。本頁採用 C = K × P,其中 P 為列向量。對於金鑰行 a b; c d 與對應對 a b; c d,輸出為 a×x+b×y 以及 c×x+d×y,每項皆模 26 處理。

解密需要模 26 的逆矩陣。行列式 a×d−b×c 必須與 26 互質;否則將無唯一逆矩陣,多組明文對可能對應相同密文。本介面拒絕此類金鑰,而非提供誤導性結果。負值或大值的金鑰會被歸一化至 0 至 25 的範圍內。

密文必須包含偶數個正常化字母,因為每組包含兩個值。明文長度可為奇數,因為加密會追加一個 X。若原始訊息確實以 X 結尾,解密無法區分該字元與填充字元。在受控練習中,請記錄原始長度,而非自動刪除尾部的 X。

Hill 密碼歷史上具有重要地位,因為它將線性代數應用於多字母取代。然而,它不適合現代保密需求。已知明文可揭露線性關係,字母表與塊大小較小,且本頁直接暴露金鑰。請勿用於密碼、令牌、個人資訊、檔案或生產訊息。請改用經審核的認證加密方案,例如 AES-GCM 以確保真實安全。

八個獨立計算的測試案例涵蓋預設 HELP 例子、奇數長度填充、零值與最大字母值,以及三種其他可逆矩陣。每個測試案例皆雙向驗證。無效行列式、奇數密文、空的正常化輸入與過大訊息皆被拒絕。輸入長度上限為 100,000 個字母,以維持互動的響應速度。

使用本頁時,請確認對方的字母對應、向量方向、塊大小與填充規則。請輸入恰好四個整數金鑰值,先測試已公開的已知對應對,再處理較長的練習,並比較 A-Z 的正常化輸出。若結果不一致,通常代表的是規則差異,而非瀏覽器運算錯誤。輸出僅含大寫字母,並有意忽略移除的顯示符號。若練習要求恢復詞語,請分別保留空格;正常化無法還原大小寫、標點、重音符號或數字。計算器也會保留解密後的尾部 X 不做移除,因為自動刪除可能導致真實訊息中的字元遺失。

方法與來源

字母對應至 0 至 25,組成兩元素的列向量。加密運算為 K × P 模 26。解密則乘以 det(K) 的負 1 次方乘以餘子式,模 26,前提是 gcd(det, 26) = 1。

常見問題

為何我的 Hill 密碼結果不同?
對方來源可能使用行向量、不同的 A 到數值對應、不同的塊大小或不同的填充規則。本頁明確說明其使用規則。
為何我的金鑰被拒絕?
其行列式與 26 不互質,因此矩陣無模逆,無法唯一解密每組對應。
Hill 密碼安全嗎?
不安全。這是一種歷史教學用途的密碼,不適合用於真實機密。請改用現代的認證加密方案來處理生產資料。

編碼與加密 使用指南

查看全部