密码学基础系列之(2.1传统对称密钥密码之三)

多码代换密码

多码代换中,明文字符与密文字符的关系是一对多。密文C除了与明文P有关外,还与P的位置有关。

自动密钥密码

autokey cipher

P=P1P2P3...          C=C1C2C3.....       k=(k1, P1, P2, ...)

加密:Ci = (Pi+ki) mod N                解密: Pi = (Ci-ki) mod N

该密码隐藏了单字频率,但密钥域太小。


Playfair 密码

一战中英国军队使用过该密码。

加密:将明文中的双字母组合作为一个单元对待,并将这些单元转换位密文双字母组合。加密过程把密钥填写在一个5×5的矩阵中(去出重复字母和字母j),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中。
  加密规则如下:
  1 若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。
  2 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。
  3 若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母,并且c1和p1, c2和p2同行。
  4 若p1 p2相同,则插入一个事先约定的字母,比如X 。
  5 若明文字母数为奇数时,则在明文的末端添加某个事先约定的字母作为填充。

解密:将密钥填写在一个5×5的矩阵中(去出重复字母和字母j),矩阵中其它未用到的字母按顺序填在矩阵剩余位置中,根据替换矩阵由密文得到明文。
  解密规则如下:
  1 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
  2 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
  3 若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母,并且c1和p1, c2和p2同行。

该密码的密钥域长度为25!,同时隐藏了单字母频率。


Vigenere密码

该密码的密钥流是一个长度为m的起始密钥流的重复。

P=P1P2P3……    C=C1C2C3……    K=[(k1, 2, ……km),(k1, 2, ……km)……]

加密:C1=Pi+ki           解密:Pi = Ci-ki

该密码不保存字符的频率,也无法直接暴力攻击。但还有方法进行有效攻击。具体的方法后面专门介绍。


上一篇

你可能感兴趣的:(cyber,security,密码学基础)