古典密码的加密是将明文的每一字母代换为字母表中的另一个字母,代换前者首先将明文字母用等价的十进制数字代替,再以代替后的十进制数字进行运算。根据代换是对每个字母逐个进行还是对多个字母同时进行,古典密码又分为单表代换密码和多表代换密码。
单表代换密码
1.凯撒密码:
加密 c = E3(m) ≡ m +3(mod 26), 0 ≤ m ≤ 25
解密 m = D3(c) ≡ c - 3(mod 26), 0 ≤ m ≤ 25
其中,3是加解密所用到的密钥,加密时,每个字母向后移3位(循环移位,字母x移到a,y移到b,z移到c)。解密时,每个字母向前移3位(循环移位)。
2.移位变换
移位变换的加解密分别是
c = E3(m) ≡ m +k(mod 26), 0 ≤ m,k ≤ 25
m = D3(c) ≡ c - k(mod 26), 0 ≤ m,k ≤ 25
3.仿射变换
仿射变换的加密解密分别是
c = Ea,b(m) ≡ am + b(mod 26)
m = Da,b(c) ≡ a-1(c-b)(mod 26)
其中a,b是密钥,为满足0 ≤ a, b ≤ 25 和 gcd(a,26) = 1的整数。其中gcd(a,26)表示a和26的最大公因子,gcd(a,26) = 1表示a和26是互素的,a-1表示a的逆元,即a-1·a ≡ 1 mod 26
多表代换密码
多表代换密码首先将明文M分为由n个字母构成的分组M1,M2,..., Mj , 对每个分组Mi 的加密为 Ci ≡ AMi + B(mod N), i = 1,2,...j 其中,(A,B)是密钥,A是n×n 的可逆矩阵,满足gcd(|A| , N) = 1(|A| 是行列式)。B = (B1,B2,....Bn)T,C = (C1,C2,....Cn)T,Mi = (m1,m2,....mn)T。对密文分组Ci 的解密为 Mi ≡ A-1(Ci - B ) (mod N), i = 1,2,...j