古典密码-多表密码体制

如果明文中不同的位置的同一明文字母在密文中对应的密文字母不同,则称为多表密码体制。

代表性的多表密码:

1.Vigenere密码

2.Beaufort密码

3.running-key密码

4.Vernam密码

5.Hill密码

例子:

1.Vigenere密码加密:

设明文   m=m1m2...mn

密钥      k = k1k2...kn

则密文   c=Ek(m)=c1c2...cn

其中      ci=(mi+ki)(mod 26),(i=1,2,...,n)

Vigenere密码解密:

设明文   m=m1m2...mn

密钥      k = k1k2...kn

则明文   m=Dk(m)=m1m2...mn

其中      mi=(ci-ki)(mod 26),(i=1,2,...,n)

假设密钥是hold,生成的加密解密移位密码表为:

  +h +o +l +d
a h o l d
b i p m e
c j q n f
d k r o g

.

.

.

.

.

.

.

.

.

.

x a l i a
y b m j b
z c n k c

2.Beaufort密码

与Vigenere密码相似

设明文   m=m1m2...mn

密钥      k = k1k2...kn

则密文   c=Ek(m)=c1c2...cn

其中      ci=(ki+25-mi)(mod 26),(i=1,2,...,n)

3.running-key密码

对于周期代换密码,保密随周期的加大而增加,当周期的长度和明文一样长时,就成了running-key密码。

4.Vernam密码

加密:Ci=Pi⊕Ki

解密:Pi=Ci⊕Ki

(⊕表示模2加法)

设明文为101,密钥是110

则加密101⊕110=011

   解密011⊕110=101

要求构造和消息一样长的随机密钥

5.Hill密码

加密:c=m K mod n

解密:m=c K-1mod n(注意这里的K-1是K的逆元)

设K=[11     8]

   [ 3      7]          (Ps.这是一个矩阵)

|K|=11*7-3*8=53≡1(mod 26)

K*=[ 7      -8]

  [-3      11]

  =[ 7      18]

      [23     11]

K-1=|K|-1 *   K*=[ 7     18]

         [23     11]

加密:

明文字符为“hi“,m=(7,8)

(7,8) *  [11     8]

        [ 3      7]

= (23,8)

对应密文字符"xi"

解密:

(23,8) *  [ 7     18]

      [23     11]

=(7,8)

对应明文字符"hi"。

原文地址:https://www.cnblogs.com/13jhzeng/p/5514328.html