古典密码

  古典密码的加密是将明文的每一字母代换为字母表中的另一个字母,代换前者首先将明文字母用等价的十进制数字代替,再以代替后的十进制数字进行运算。根据代换是对每个字母逐个进行还是对多个字母同时进行,古典密码又分为单表代换密码和多表代换密码。

单表代换密码

  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,..., M, 对每个分组M的加密为 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。对密文分组C的解密为 Mi ≡ A-1(Ci  - B ) (mod N), i = 1,2,...j

原文地址:https://www.cnblogs.com/zhangzimu/p/8568515.html