Download as pdf or txt
Download as pdf or txt
You are on page 1of 9

科技部補助

大專學生研究計畫研究成果報告
**********************************
*計畫 *
* :希爾加密解密器 *
*名稱 *
**********************************

執行計畫學生:洪翰森
學號:E94096186
指 導 教 授 :游濟華
Github:https://github.com/Conan0718/Hill_Cipher

中華民國 111 年 6 月 15 日

1
一、摘要
希爾密碼是在古典密碼學中替換式密碼的一種,利用線性代數按規律
將一般的文字加密的一種方式,由 Lester S. Hill 在 1929 年發明。此專題是
在簡易的數值方法及線性代數的基礎上所撰寫的一個的程式,達到類似於
希爾密碼的效果。
二、研究動機及研究問題
從經典的電影模仿遊戲由 Benedict Cumberbatch 所扮演的密碼學和計
算機科學的專家 Alan Turing,到外表看似小孩,智慧卻過於常人的名偵探
柯南,這些經常破解超難的暗號、密碼的主角從以前便深深吸引著我,因
此經常會想著能夠用暗號或是摩斯密碼來和其他人進行溝通。然而能夠懂
得我的暗號的人往往只有幾人,所以設計了此希爾密碼加密/解密器(洪翰
森 version)來給那些不懂我暗號的人解密/加密。
三、文獻回顧與探討
在文獻回顧中,由於在現代電腦技術的發達下古典密碼學已不足以應
付當前社會的需求,往往已變成理論或教材來教育學生而已,但儘管這樣
仍有許多的現代加密技術能夠在其中看到古典密碼學的影子,像是在美國
聯邦政府採用的進階加密標準中便有步驟採用了類似於希爾密碼的加密方
式。
四、研究方法及步驟
不同於密碼學經典凱薩密碼每個字母偏移一定的數來進行加密,希爾
密碼則是利用表格式(polygraphic)加密,n 個字母組成一組同時進行加密,
而同乘的 n*n 矩陣即為鑰匙。通常 n=3 而此專題也是採納 n=3 的作法。但
若傳遞的訊息包含空格、逗號和句號不是 3 的倍數時,在大部分情況會變
成重複最後一個字母,而我在此專題則會使用空格補足。

加密:
首先,我的字母集是 A~Z 代表 0~25、空格’ ’代表 26、逗號’,’代表 27
以及最後句號’.’代表 28,而至於為何字母集會有 29 個也有特殊的原因,
鑰匙的行列式必須與與字母集總數(29)互質才能保證密鑰可逆。假設要傳
遞的訊息為”i need help.”再假設每一組字母是由 n=3 個字母組成,因此可分
割為四組。’i n’ ‘eed’ ‘ he‘ ‘lp.’。即:

8 4 26 11
[26] [4] [ 7 ] [15]
13 3 4 28

再隨意取任意 3*3 可逆矩陣作為鑰匙,例如”lctfxzuhr”:

2
11 2 19
[5 23 25]
20 7 17

經過計算可得加密矩陣:

11 2 19 8 4 26 11
[5 23 25] [26 4 7 15 ]
20 7 17 13 3 4 28

387 109 376 683 10 22 28 16


= [963 187 391 1100 ] ≡ [ 6 13 14 27] (𝑚𝑜𝑑29)
563 159 637 801 12 14 28 18

可得加密訊息:”kgmwno.o.q,s”

解密:
僅須得到鑰匙的逆矩陣即可求得味精加密前的訊息,然而鑰匙的逆矩
陣求法與平時單純的逆矩陣求法有些微差異,眾所皆知 A-1 = (detA)-1adjA
此為一般逆矩陣求法,但這裡的(detA)-1 須利用嘗試錯誤法求得
(detA)−1 ≡ 10(𝑚𝑜𝑑29),而 detA = −4869 ≡ 3(mod29)
驗證:(detA)(detA)−1 = 10 × 3 = 30 ≡ 1(mod29)
接著帶入公式:

14 4 16
𝐴−1 = (𝑑𝑒𝑡𝐴)−1 (𝑎𝑑𝑗𝐴) = [ 3 13 27] (𝑚𝑜𝑑29)
13 7 23

再把求得鑰匙逆矩陣乘以加密訊息矩陣即可得原訊息” i need help.”:

14 4 16 10 22 28 16
[ 3 13 27] [ 6 13 14 27]
13 7 23 12 14 28 18

356 584 896 620 8 4 26 11


= [432 613 1022 885 ] ≡ [ 26 4 7 15 ]
448 699 1106 811 13 3 4 28

3
再來是程式步驟:
此為加密的函式:

4
此為解密的函式:

5
簡易功能簡介:

錯誤狀況:1 鑰匙非 9 個字母組成

6
錯誤狀況 2:為非法鑰匙(可能是 det = 0 或是有非法字母函在裡面)

五、成果與討論
如同剛剛所計算的,我們已”i need help.”作為傳遞訊息,”lctfxzuhr”作
為鑰匙進行試驗:

7
確實得出與上面方法一樣的結果”kgmwno.o.q,s”,而若再把加密的訊息
重新進行解密即可得原訊息” i need help.”。

也可再進行其餘的試驗例如我要在黎明時進攻,而要彙報給戰友訊息
時”attack at dawn”作為要傳遞訊息,已”posiwsvbn”是我們戰友間的鑰匙進
行加密試驗:

得到” mwfviquuk r,lt,”,我便可將此訊息傳達給戰友,而展有再利用傳

8
達到的訊息與我們之間互通的鑰匙進行解密則可得”attack at dawn”,便達
成了溝通的效果:

You might also like