背景
普莱费尔密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatstone)的英国人发明。
基本原理
Playfair算法基于一个5*5的字母矩阵,该矩阵使用一个关键词构造,方法是按从左到右、从上到下顺序,填入关键词的字母(去除重复字母)后,将字母表其作余字母填入。
它依据一个5x 5的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过 25 个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。
操作步骤
①构造一个基于5×5的字母矩阵
②该矩阵使用一个关键词(密钥)来构建
③然后从左到右、从上到下;依次填入密钥的字母(注意:密钥中重复的字母不填),然后再以字母表顺序依次填入其他字母
④字母 I 和 J 算作一个字母
例如:取关键字(密钥):monarchy,则字母矩阵为下图所示(矩阵只能放25个字母,I与J同)
加密规则
Playfair加密算法是先将明文按两个字母一组进行分组,然后在矩阵中找对应的密文。
取密文的规则如下:
- 若明文出现相同字母在一组,则在重复的明文字母中插入一个填充字母(eg:z)进行分隔后重新分组(eg: balloon被重新分组为ba lz lo on)
- 若分组到最后一组时只有一个字母,则补充字母z
- 若明文字母在矩阵中同行,则循环取其右边下一个字母为密文(矩阵最右边的下一个是最左边的第一个)(eg: ar被加密为RM)
- 若明文字母在矩阵中同列,则循环取其下边下一个字母为密文(矩阵最下边的下一个是最上边的第一个)(eg: mu被加密为CM)
- 若明文字母在矩阵中不同行不同列,则取其同行且与同组另一字母同列的字母为密文(eg: hs被加密为BP,ea被加密为IM或JM)
总结:同行、同列的明文则向右、向下位移一位得到的字母作为密文输出
不同行不同列的明文则取其同行同列交互的字母作为密文输出
注意:若关键词(密钥)中出现相同的字母时,则需要去掉重复的密钥(如果有重复则跳过)
例如:关键词(密钥)是:PLAYFAIR IS A DIGRAM CIPHER
然后按照上述方式进行变换加密
接下来就以具体的题目来进行分析:
①从题目中知道关键字(密钥):encrypt 之后,然后构造5×5的矩阵
e | n | c | r | y |
p | t | a | b | d |
f | g | h | i/j | k |
l | m | o | q | s |
u | v | w | x | y |
②然后根据上述的加密规则:
明文:mata 两两进行分组➡ma ta
此时 ma 在不同行不同列 对应的密文为:ot
ta 在同行 对应密文为:ab
综上:mata对应的密文为:otab