乐趣区

关于安全:现代信息安全之-多表代换密码

多表代换明码

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

首先将明文 M 分为由 n 个字母形成的分组 M 1,M2,…,Mj,每个分组 M i的加密为:

Ci ≡ AMi + B(mod N)

其中 (A, B) 是秘钥,A 是 n * n 的可逆矩阵。

每个密文 C i的解密为:

Mi ≡ A-1(Ci – B)(mod N)

例子

设 n =3,N=26,明文为“YOUR PIN NO IS FOUR ONE TWO SIX”

$$
A=
\begin{Bmatrix}
11 & 2 & 19 \\
5 & 23 & 25 \\
20 & 7 & 17
\end{Bmatrix}
$$

$$
B=\begin{Bmatrix} 0 \\ 0 \\ 0 \end{Bmatrix}
$$

加密

将明文按每三个字母从新分组:“YOU RPI NNO ISF OUR ONE TWO SIX”。

代换为数字示意:

M1 = 24 14 20
M2 = 17 15 8
M3 = 13 13 14
M4 = 8 18 5
M5 = 14 20 17
M6 = 14 13 4
M7 = 19 22 14
M8 = 18 8 23

依据公式 Ci ≡ AMi + B(mod N) 计算 C i

C1 = AM1 + B(mod N)

= A[0][0]×M1[0] + A[0][1]×M1[1] + A[0][2]×M1[2] + B[0](mod 26)
= 11×24 + 2×14 + 19×20 + 0(mod 26) 
= 672(mod 26)
= 22

= A[1][0]×M1[0] + A[1][1]×M1[1] + A[1][2]×M1[2] + B[1](mod 26)
= 5×24 + 23×14 + 25×20 + 0(mod 26) 
= 942(mod 26)
= 6

= A[2][0]×M1[0] + A[2][1]×M1[1] + A[2][2]×M1[2] + B[2](mod 26)
= 20×24 + 7×14 + 17×20 + 0(mod 26) 
= 918(mod 26)
= 8

C1 =(22 6 8)= WGI

= A[0][0]×M2[0] + A[0][1]×M2[1] + A[0][2]×M2[2] + B[0](mod 26)
= 11×17 + 2×15 + 19×8 + 0(mod 26) 
= 5

= A[1][0]×M2[0] + A[1][1]×M2[1] + A[1][2]×M2[2] + B[1](mod 26)
= 5×17 + 23×15 + 25×8 + 0(mod 26) 
= 6

= A[2][0]×M2[0] + A[2][1]×M2[1] + A[2][2]×M2[2] + B[2](mod 26)
= 20×17 + 7×15 + 17×8 + 0(mod 26) 
= 9

C2 =(5 6 9)= FGJ
C3 =(19 12 17)= TMR
C4 =(11 7 7)= LHH
C5 =(23 19 7)= XTH
C6 =(22 1 23)= WBX
C7 =(25 15 18)= ZPS
C8 =(1 17 1)= BRB

密文为:WGI FGJ TMR LHH XTH WBX ZPS BRB

解密

Mi ≡ A-1(Ci – B)(mod N)

退出移动版