`

传统密码学(二)——周期置换密码和多表代换密码(Playfair)

 
阅读更多

一、周期置换密码

      周期置换密码是将明文字符串P按固定的长度m进行分组,然后对每组字符串中的字符按照某个密钥重新排位的到密文C。其中密钥S包含分组长度信息。解密时只需得到密钥S的逆置换,把密文重新分组,按照密钥的逆置换对密文的子字符串重新排位就可以得到明文P。

 

例子:

      1、 明文:“State Key Laboratory of Networking and Switching”;

      2、加密的密钥:S=(1 5 6 2 3);

      3、将明文分为七组,每组6个字符,不足6个的用双方规定好的字符进行填充,比如空格。

            P’ = (StateK)(eyLabo)(ratory)(ofNetw)(orking)(andSwi)(tching)

      4、对每组的字符进行加密,根据密钥S,可知将第1个字符放在第5个字符的位置,第5个字符放在第6个字符的位置,第6个字符放在第2个字符的位置,第2个字符放在第3个字符的位置,第3个字符放在第1个字符的位置,置换后P'如下:

            P‘ = (aKttSe)(Loyaeb)(tyaorr)(Nwfeot)(kgrion)(dinSaw)(hgcitn)

所以得到的最终密文Pm = "aKttSeLoyaebtyaorrNwfeotkgriondinSawhgcitn"。

       5、周期置换的解密方法就是加密的逆运算,只需求出密钥的逆置换即可。可以知道密钥S=(1 5 6 2 3)的逆置换S’ = (1 3 2 6 5),所以只需将密文重新分组,通过S'的置换顺序就可以得出明文P。

 

二、多表代换密码(Playfair)

    1、Playfair的密钥矩阵构造:

       将明文字符按两个字符为一组分成若干个单元,然后将这些单元替换为密文字符组合,替换时基于一个5X5字符矩阵,该矩阵使用一个密钥来构造,方法如下:从左到右,从上到下一次填入关键词的字母,若关键词中有重复字母,则第二次出现是跳过。若密钥以全部填完,则剩下的位置有字母表中剩下的字母按照顺序一次填入矩阵,其中字母 i 和 j 看做是同一个字符。同时约定表中的第一列是第五列的右边一列,第一行是第五行的下一行。

     2、加密方法:

        (1) 若密文中的两个字符在密钥矩阵中是在同一行,则明文对应的密文字符是紧靠右端的字符;

        (2) 若在同一列,则对应的密文是紧靠下端的字符;

        (3) 若不在同一行,也不在同一列,则对应的密文是以对角顶点确定的矩形的另外的两个顶点字母,按同行的原则对应。

        (4) 若明文字符数为奇数,则明文的末端添加一个事先约定好的字符进行填充,比如空格。

     3、解密方法:

        Playfair的界面方法和加密方法相似,只是将加密过程中的改成,下改成上即可。

 

例子:

      (1) 设密钥S = “PLAYFAIR IS A DIGRAM CIPHER”;

      (2) 密钥矩阵:

                           

       (3) 设明文P = “play fair cipher”,将P进行分组,每两个一组,则得到P' = “pl ay fa ir ci ph er”;

       (4) 通过加密算法,可得密文M = “LA YF PY RS MR AM CD”;

       (5) 补充说明加密方法的第(3)点,在密文P'中,有一组密文“ci”,可以知道c和i在密钥矩阵中不在同一行,也不在同一列,则以c和i为顶点形成一个2X2的矩阵,得到该新矩阵另外两个顶点R和M,则R为i的密文,M为C的密文。

 

 

  • 大小: 6.3 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics