playfair密码
简介
普莱费尔密码(英文:Playfair cipher 或 Playfair square)是一种使用一个关键词方格来加密字符对的加密法,1854年由一位名叫查尔斯·惠斯通(Charles Wheatstone)的英国人发明。
在1854到1855年的克里米亚战争和1899年的布尔战争中有广泛应用。但在1915年的一战中被破译了。
特征
- 密文的字母数为偶数
- 任意俩个同组字母不相同,否则为乱码和虚码
- 有效防止频率分析法
算法
5*5的正方形密码表,排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。 如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。
加密
1. 编制密码表
- 5*5字母矩阵
- 由密钥来构造
- 从左到右、从上到下(或从上到下、从左到右)依次填入密钥的字母(不重复,重复的字母不填),然后以字母顺序表填入其他字母
- 字母I与J算作一个字母
2. 加密方式
- 分组
将明文两两分组
- 若明文个数为偶数,直接分组
- 若明文个数为奇数
缺补:在最后一个明文字母的后面补上其下一位字母(或者就插入一个字母X(或者Q)。) - 若明文分组后同一组字母相同
同插:在相同的字母中间插入其下一个字母(或者就插入一个字母X(或者Q)。)
同插补缺操作不分先后,结果相同
- 移位和替换
令每组明文的第一个字母为p1,第二个字母为p2,每组密文的第一个字母为c1,第二个字母为c2有
- 若p1,p2位于同一行,c1,c2分别为紧靠p1,p2右端的字母(其中第一列为最后一列的右端)
- 若p1,p2位于同一列,c1,c2分别为紧靠p1,p2下端的字母(其中第一行为最后一行的上端)
- 若p1,p2既不在同一行,也不在同一列,则c1,c2为p1,p2确定的矩形的其他两角字母(至于横向替换还是纵向替换要事先约好,或自行尝试,例如TL对应EG还是GE)
3. 解密
加密可逆
标签:playfair,p2,p1,加密,字母,明文,密码,c2 From: https://www.cnblogs.com/raccoon-JWX/p/17335053.html