1. 程式人生 > 實用技巧 >古典密碼-希爾密碼Hill

古典密碼-希爾密碼Hill

本文目的在於整合了網上的Hill Cipher原理、解密及演算法實現
大部分均為轉載,可以連結到原文地址檢視,這裡只是整合文章

簡介

以下直接搬運原文,便於檢視,也可以直接連結到原文地址檢視

ctf-wiki-Hill

ctf-wiki-Hill

希爾密碼(Hill)使用每個字母在字母表中的順序作為其對應的數字,即 A=0,B=1,C=2 等,然後將明文轉化為 n 維向量,跟一個 n × n 的矩陣相乘,再將得出的結果模 26。注意用作加密的矩陣(即密匙)在 Zn26Z26n 必須是可逆的,否則就不可能解碼。只有矩陣的行列式和 26 互質,才是可逆的。下面舉一個例子

明文:ACT

將明文化為矩陣。

\[\left[ \begin{matrix} 0 \\ 2 \\ 19 \end{matrix} \right] \]

假設金鑰為:

\[\left[ \begin{matrix} 6&24&1 \\ 13&16&10 \\ 20&17&15 \end{matrix} \right] \]

加密過程為:

\[\left[ \begin{matrix} 6&24&1 \\ 13&16&10 \\ 20&17&15 \end{matrix} \right]\left[ \begin{matrix} 0 \\ 2 \\ 19 \end{matrix} \right] ≡\left[ \begin{matrix} 67 \\ 222 \\ 319 \end{matrix} \right] mod\ 26 \]

密文即為

密文:POH

practicalcryptography.com-Hill

practicalcryptography.com-Hill

該網站詳細地介紹了Hill密碼,包括歷史、運用等等

但是線上的指令碼只能支援 2 × 2 矩陣

Decrypto

  1. 線上網頁
    http://www.atoolbox.net/Tool.php?Id=914
    http://www.practicalcryptography.com/ciphers/hill-cipher/
  2. C語言實現解密演算法
    https://blog.51cto.com/xmwen1/1751672

相關題目

ISCC 2015 base decrypt 150

這裡我們以 ISCC 2015 base decrypt 150 為例進行介紹,題目為

密文: 22,09,00,12,03,01,10,03,04,08,01,17 (wjamdbkdeibr)

使用的矩陣是 1 2 3 4 5 6 7 8 10

請對密文解密.

首先,矩陣是 3 × 3 的。說明每次加密 3 個字元。我們直接使用 Cryptool,需要注意的是,這個矩陣是按照列來排布的。即如下

1 4 7
2 5 8
3 6 10

參考WP:
github.com/purpleroc/ISCC-2015-Writeups

最後的結果為 overthehillx