古典密碼

密碼

在現今資訊爆炸的年代,溝通容易變得公開,故加密 (Coding) 的工作尤其重要。

所謂「加密」,即把一段訊息,我們通稱「明文」(Message) ,加上密碼,成為「密文」(Code) ,再行傳輸,即使被別人看了,別人也不明其意。

當指定接收訊息的人經過一個「解密」(Decode) 或稱「解碼」的程序後,便得知原本的「明文」。

以往的加密方法有很多,如易位、代替等,我們通稱「古典密碼」(Classic Cipher)。

 

凱撒密碼

凱撒密碼 (Caeser's Cipher) 是指用別的字母 (或單一漢字) 代替原本「明文」上的字母 (或單一漢字) ,使之「密文」。如:

明文:「AMY ATTENDED A MEETING」後移 (5)

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E

表中紅色為加密後的字母。

 

把「明文」字母作一一對應的替換得:

密文:「FRD FYYJSIJI F RJJYNSL

 

當中的「後移五」,我們稱為「密鑰」,即解密的鑰匙。

 

因為古代的凱撒大帝 (Gaius Julius Caeser Augustus, 前 63 - 14) 曾使用此方法加密,因而得名。但此法實得二十六種不同的可能性,很易被解。

 

換密碼

若我們把二十六個字母看成 0 至 25 這二十六個不同的數字,是指用別的字母 (或單一漢字) 代替原本「明文」上的字母 (或單一漢字) ,使之「密文」。如:

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

22

23
24
25
0

 

我們可以找出一道算式,使 0 至 25 各數經運算後除以 26 的餘數均在 0 至 25 內,而不同的兩個數字的結果不會相同。以此法所作的加密,便是「置換密碼」(Permutation Cipher)。

若以這角度來看,凱撒密碼的算式便是使用了加法或減法。此外,我們也可使用乘法,而被乘數只要是與 26 互素 (Coprime) ,那便會達至上述對算式的要求。

 

如:

明文:「AMY ATTENDED A MEETING」

算式: 7X - 11

A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

22

23
24
25
0
22 3 10 17 24 5 12 19 0 7 14 21 2 9 16 23 4 11 18 25 6 13 20 1 8 15
V C J Q X E L S Z G N U B I P W D K R Y F M T A H O

表中紅色的數字和字母分別為經算式運算後的數值和加密後的字母。

 

把「明文」字母作一一對應的替換得:

密文:「VBH VYYXIQXQ V BXXYZIL

 

解密的方法,便是找出算式的反函數,即 (X+11)/7 或 15(X+11) 或 15X+9。這樣便可找出由密文和明文的字母對應表,便可解密。留意,這兒反函數的計算涉及同餘 (Congruence) 的學問,詳可參看《同一餘數的學問》一文。

 

易位密碼

易位密碼 (Tranposition Cipher) 亦稱為欄柵易位密碼 (Columnar Tranposition Cipher) ,通常用於西方字母組成的文句中,方法是把明文的字母次序改變,使人難於明白。如:

明文:「AMY ATTENDED A MEETING」

上文合共有 19 個字母 (不計空白),我們作一 4x5 的方陣,如下。

A
M
Y
A
T
T
E
N
D
E
D
A
M
E
E
T
I
N
G

我們改變次序,得

密文:「ATDT MEAI YNMN ADEG TEE

 

古典密碼的不足

古典密碼的不足在於其依然以字母為基礎,要知道英文中各字母出現的頻率不一:

字母
頻率
字母
頻率
字母
頻率
字母
頻率
字母
頻率
A
0.0856
B
0.0139
C
0.0297
D
0.0378
E
0.1304
F
0.0289
G
0.0199
H
0.0528
I
0.0627
J
0.0013
K
0.0042
L
0.0339
M
0.0249
N
0.0707
O
0.0797
P
0.0199
Q
0.0012
R
0.0377
S
0.0607
T
0.1045
U
0.0249
V
0.0092
W
0.0149
X
0.0017
Y
0.0199
Z
0.0008

 

這現象在中文上亦是相類似,只要我們計算字母出現頻率,再加推敲,破解密文實不難。 再者,密鑰的變化依然有限,以電腦的計算能力,一一推敲亦不難。當然古典密碼在一些短語的傳遞上仍有作用,但整篇文章以此法加密,其保安能力已顯然不足了。