多表代换密码

ABCDEFGHIJKLM
0123456789101112
NOPQRSTUVWXYZ
13141516171819202122232425

首先将明文M分为由n个字母构成的分组M1,M2,...,Mj,每个分组Mi的加密为:

Ci ≡ AMi + B(mod N)

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

每个密文Ci的解密为:

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) 计算Ci

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)

image.png

image.png


小伍
139 声望4 粉丝