複製鏈接
請複製以下鏈接發送給好友

仿射密碼

鎖定
仿射密碼為單表加密的一種,字母系統中所有字母都藉一簡單數學方程加密,對應至數值,或轉回字母。
中文名
仿射密碼
外文名
Affine cipher
組    成
加法密碼和乘法密碼結合
舉    例
三個字母對應的數值是0、23、6
利    用
輾轉相除法
學    科
密碼學

仿射密碼介紹

仿射密碼是一種替換密碼。它是一個字母對一個字母的。它的加密函數是
,其中a和m互質,m是字母的數目。解碼函數是
,其中
是a在
羣的乘法逆元 [1] 
仿射密碼為單表加密的一種,字母系統中所有字母都藉一簡單數學方程加密,對應至數值,或轉回字母。 其仍有所有替代密碼之弱處。所有字母皆藉由方程
加密,b為移動大小。
在仿射加密中,大小為m之字母系統首先對應至0..m-1範圍內之數值, 接着使用模數算數來將原文件中之字母轉換為對應加密文件中的數字。 單一字母的加密函數為
取餘m為字母系統大小且a和b為密碼關鍵值。a之值必須使得a與m互質。解密方程為
此處滿足等式
a之乘法逆元素僅存在於a與m互質條件下。 由此,沒有a的限制,可能無法解密。 易知解密方程逆於加密方程。

仿射密碼缺點

因為仿射密碼仍為單字母表密碼, 其依舊保留了該類別加密之弱處。當a=1,仿射加密為凱撒密碼,因該加密方程可簡化為線性移動。 考慮加密英文。(即:m=26),不計26與凱薩密碼,總共有286種仿射密碼。此數值是由於小於26之數中有12數與26互質。a 的每個值可有26互異之加法移動(b之值);因此,共有 12*26 或 312 可能之關鍵值。 因為密碼缺少複雜性,根據柯克霍夫原則,這套系統是不安全的。
此密碼之首要弱處為,如果密碼學家可發現(如頻率分析, 暴力破解, 臆測或任何其他方法) 加密文件兩字元之原文,則關鍵值可透過解一方程組得到。 由於我們知道a及m互質,這個事實可被用於快速破解密碼。
仿射密碼中同種的轉換使用於線性虛擬隨機產生器, 為虛擬隨機數產生器其中一種。 此產生器不為安全加密虛擬隨機數產生器,因仿射密碼不安全。

仿射密碼範例

在以下一加密一解密的例子中,字母為從A至Z,且在表格中都有對應值。
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
0
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

仿射密碼加密

在加密範例中,,使用前述表格中各字母對應之數值可知欲加密的原文件為 "AFFINE CIPHER" ,a對應5,b對應 8,而m對應26 (因共使用26字母)。a的所有可能值有 1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23, 與 25。 若a不等於 1,b之值可隨機選定, 所以,此加密範例的函數為
。加密訊息的首步即為寫出每個字母的數字值。
原始文件:
A
F
F
I
N
E
C
I
P
H
E
R
x:
0
5
5
8
13
4
2
8
15
7
4
17
現在,取x各值並解等式的第一部分,(5x+8)。 得出各字母對應 (5x+8)的值後,取其對26的餘數。以下表格為加密的首四步驟。
原始文件:
A
F
F
I
N
E
C
I
P
H
E
R
x
0
5
5
8
13
4
2
8
15
7
4
17
5x+8
8
33
33
48
73
28
18
48
83
43
28
93
(5x+8)mod26
8
7
7
22
21
2
18
22
5
17
2
15
加密訊息的最後一步,為查表求得對應字母的數值。 在此範例中,加密文本應為 IHHWVCSWFRCP。 以下表格顯示仿射加密一訊息的完整表格。
原始文件:
A
F
F
I
N
E
C
I
P
H
E
R
x
0
5
5
8
13
4
2
8
15
7
4
17
5x+8
8
33
33
48
73
28
18
48
83
43
28
93
(5x+8)mod26
8
7
7
22
21
2
18
22
5
17
2
15
加密文件:
I
H
H
W
V
C
S
W
F
R
C
P

仿射密碼解密

於此解密範例中,欲解密之加密文件來自加密範例 。其解密方程為
,經過計算,a-1為 21,b為8,m為 26。伊始之時,寫下加密文件中對應各字母之數值,如以下表格所示:
密文:
I
H
H
W
V
C
S
W
F
R
C
P
y:
8
7
7
22
21
2
18
22
5
17
2
15
下一步,計算21(y-8),再取結果除以26的餘數。以下表格顯示兩者計算後的結果。
密文:
I
H
H
W
V
C
S
W
F
R
C
P
y:
8
7
7
22
21
2
18
22
5
17
2
15
21(y-8):
0
-21
-21
294
273
-126
210
294
-63
189
-126
147
(21(y-8)) mod 26:
0
5
5
8
13
4
2
8
15
7
4
17
解密的最後一步,藉由表格將數值轉回字母。解密的原始文件為 AFFINECIPHER。 以下為完成解密後的表格:
加密文件:
I
H
H
W
V
C
S
W
F
R
C
P
y:
8
7
7
22
21
2
18
22
5
17
2
15
21(y-8):
0
-21
-21
294
273
-126
210
294
-63
189
-126
147
(21(y-8)) mod 26:
0
5
5
8
13
4
2
8
15
7
4
17
原文件:
A
F
F
I
N
E
C
I
P
H
E
R

仿射密碼全數字母加密

為求加解密更快速,可加密全數字母以將原文件之字母一對一對應至加密文件。此範例中,一對一映射如下:
原文件中字母
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
原文件中數字
0
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
(5x+8)mod(26)
8
13
18
23
2
7
12
17
22
1
6
11
16
21
0
5
10
15
20
25
4
9
14
19
24
3
加密文件字母
I
N
S
X
C
H
M
R
W
B
G
L
Q
V
A
F
K
P
U
Z
E
J
O
T
Y
D

仿射密碼程式實例

Python編程語言,以下代碼可用於加密羅馬字母A至Z。 [2] 
# 列印仿射密碼的字母表。# a必須與m互質
    def affine(a, b):    for i in range(26):        print chr(i+65) + ": " + chr(((a*i+b)%26)+65)# 調用函數的例子
    affine(5, 8)
或者以Java作例:
public void Affine(int a, int b){        for (int num = 0; num < 26; num++)          System.out.println(((char)('A'+num)) + ":" + ((char)('A'+(a*num + b)% 26)) );}Affine(5,8)
參考資料
  • 1.    王如濤, 史乙山, 王曉軍, 等. 仿射密碼的實現[J]. 信息安全與通信保密, 2013 (1): 75-77.
  • 2.    楊義先, 林須端. 編碼密碼學[M]. 人民郵電出版社, 1992.