• 古典密码-多表密码体制


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

    代表性的多表密码:

    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"。

  • 相关阅读:
    《学习之道》第十章方法空间能力是可以后天形成的
    《学习之道》第十章总结
    《学习之道》第十章视觉和空间记忆的原因
    数据结构之链表:双指针问题
    单例模式
    Java的锁
    Python锁
    排序算法小结
    命中索引
    反射
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5514328.html
Copyright © 2020-2023  润新知