playfair加密过程(密码学_古典密码学_多图加密算法)

Playfair

原理:多图替代 polygraphic substitution

一、密钥

密钥是一个5*5的矩阵,但是英文中有26个字母,谁的多余的呢?

——j是多余的 (‘j’渴望拥有姓名!)

如果明文中有‘j’,当成‘i’处理。谁让他俩长得这么像呢?

密钥的生成过程有点类似于key word算法密钥的生成过程

  1. 选定一个单词
  2. 去掉重复的字母和字母'j'
  3. 每行五个,把2.的结果排好
  4. 对于未使用的,按照字母表顺序每行五个排好

举个栗子:

  1. 选定单词"harpsichord"(一种乐器,大键琴)
  2. 去掉重复字母和字母'j':"harpsicod"
  3. 将2.的结果放到矩阵中
    • 第一行:H A R P S
    • 第二行:I C O D
  4. 未使用的字母:B E F GK L M N Q T U V W X Y Z接着3.填下去
    • 第二行:I C O D B
    • 第三行:E F G K L 注意,这里没有字母'J'!
    • 第四行:M N Q T U
    • 第五行:V W X Y Z

最后结果:

OU`$A1GE1KPLDWIOINQ%)KC

二、加密过程

多图加密算法是对明文进行按对加密的,

加密时,在密钥矩阵中,

先找到该明文字符对中两个字符的位置,

然后根据三个规则,确定好输出的密文对

1、三个加密规则

对于每个明文对,在密钥矩阵中的位置关系不过三种:

  • 只同行
    • 将会被它们右边的字符分别替代
    • 如果该字符在最右边一列,将会被同行 最左边一列的那个字符代替(其实就是“穿透”过去)
  • 只同列
    • 将会被它们下边的字母分别替代
    • 如果该字符在最下面一行,将会被同列 最上边一行的那个字符代替(其实就是“穿透”过去)
  • 既不同行也不同列
    • 如果两个明文对,既不同行也不同列,那么将它们连起来,记为明文链
    • 明文链就可以确定一个矩阵,它们的连线是该矩阵的对角线
    • 每个矩阵有两条对角线,另外一条记为密文链
    • 明文对将会被密文链上,和明文对同行的两个字母替代

显然,似乎应该有一个位置关系——同行同列,

如果明文对的两个字符是同行同列,是什么情况?——这说明这两个字符是相同的。

那么这三条规则则失效了,

其实,除了明文对为重复字母,这三条规则遇到一些情况也会失效:

  • 明文中有字母'j'
  • 如果明文是奇数个字母,那最后一个字母不就是单身狗了?

2、三个预处理

针对于上面的三个情况,“兵来将挡水来土掩”,我们需要对明文对进行三个预处理

在对明文正式进行加密之前,还需要对明文进行三个预处理:

  1. 将明文中的字母'j'替代成'i'
    • j:为什么总是我???
    • ——因为密钥矩阵中就没有‘j’啊!
  2. 将重复的字母中间加上特殊字母'q'
    • 如果是重复字母对,则
  3. 如果明文是奇数个字母,需要在最后加上特殊字母'q'

3、举个例子

使用我们刚刚生成的密钥矩阵,对“speciallity”进行加密

OU`$A1GE1KPLDWIOINQ%)KC

首先,对明文进行预处理:

  1. 明文中没有字母'j',无需处理
  2. 在两个’L‘之间加上'Q'
  3. 加上’Q‘之后,明文变成了偶数个
    • 注意,2.一定要在3.之前!
    • 如果我们反过来,明文对中有重复字母且为奇数个,那我们:
      • 现在最后加上无效字符'Q',明文变成了偶数个
      • 在重复字母中间加上特殊字符'Q',明文变成了奇数个
      • 再在最后加上特殊字符’Q‘,明文对变成了偶数个,但是最后两个自身重复了,还能再加上特殊字符’Q‘吗?——当然不行,那最后就有了三个’Q‘

经过预处理,明文变成了:SP EC IA LQ LI TY

  • (S,P)->(H,S)

    • 它们的位置关系是同行
    • S在最右侧,所以变成了第一列的同行字母'H'
    • P变成了右边的字母'S'
  • (E,C)->(F,I)

    • 它们既不同行也不同列
    • 明文链(E,C)(红色箭头所示)确定了矩阵(红色方框内):

    M{N4A3VG$OTZGF8BO73A$2

    • 矩阵中另一条对角线为密文链(F,I)(蓝色箭头所示)
  • (I,A)->(C,H)

  • (L,Q)->(G,U)

  • (L,I)->(E,B)

  • (T,Y)->(Y,P)

    • 这个关系是同列
    • 和(S,P)的变化过程很像

最后“speciallity”变成了“hsfichguebyp”

原文地址:https://www.cnblogs.com/huangming-zzz/p/10577490.html