1854年,英国人查尔斯·惠斯通(Charles Wheatstone)为了避免单表替换加密中单频率分析造成密码容易被破解的问题,发明了Playfair密码,该密码也是一种替代密码。
【任务描述】
明文为“where there is life,there is hope”,已知密钥为“crazy dog”,请使用Playfair密码加密方法生成密文。
【任务分析】
Playfair密码属于多表替代密码,密文编写分为编制密钥矩阵、整理明文、编写密文3步。
Playfair密码的破解思路:从明文的语言特征入手,即要统计字母的频率,同时也要考虑是否有标点符号、空格等非实义字符。
【知识准备】
1.多表替代密码
图3-13 5×5的密钥矩阵
多表替代密码的特点是使用两个或两个以上替代表。Playfair密文编写的第一步是编制密码表。例如,密钥是“DEATH”。除去重复出现的字母,将密钥字母逐个加入5×5的密钥矩阵,剩下的空间将未加入的英文字母依A~Z的顺序加入密钥矩阵内(将I和J视作同一字母),如图3-13所示。
2.Playfair密码的加密
Playfair密码算法依据一个5×5的密钥矩阵来编写,密钥矩阵里排列有25个字母。如果一种语言的字母超过25个,可以去掉使用频率最小的一个。例如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待。英语中z使用最少,可以去掉它。Playfair密码的加密过程如下。
1)编制密钥矩阵
图3-14 密钥矩阵
密钥矩阵是一个由关键词组成的5×5字母矩阵(不包含字母j,如果出现字母j,将会被i代替)。在这个5×5的矩阵中,第一列(或第一行)是密钥,其余按照字母顺序排列。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉,当然也要把使用频率最小的字母去掉。
例如,若关键词为“harpsicord”,则相应的密钥矩阵如图3-14所示。
2)整理明文
具体规则如下:
(1)将明文每两个字母组成一对。
(2)如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。例如,明文“communist”应整理为co,mx,mu,ni,st。
3)编写密文
具体规则如下:
(1)同行取右边。若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2右端的字母。其中第一列被看作最后一列的右方。例如,按照前表,ct对应dc
(2)同列取下边。若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2下方的字母。其中第一行被看作最后一行的下方。
(3)其他取交叉。若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替代还是纵向替代要事先约定或自行尝试)。例如,按照前表,wh对应ku或uk。
【任务实现】
1.使用手工计算方法加密
1)编制密钥矩阵
首先将密钥填写在一个5×5的矩阵中(将字母I和J看成同一字母,放在同一格),密钥为“crazy dog”,如图3-15所示。
图3-15 密钥矩阵
2)整理明文
将明文“where there is life,there is hope”.整理为“WH ER ETHE RE ISLIFE TH ER EISH OP EX”。
3)编写密文
根据规则(1)同行取右边;(2)同列取下边;(3)其他取交叉,得到密文为“KU YO XD OL OY PL FK DL FU YO LG LN NG LY”。(www.xing528.com)
按若干个字母为一组进行排列,如5个一组就是“KUYOX DOLOY PLFKD LFUYO LGLNN GLY”。
2.使用CAP 4软件加密
1)猜测密钥的长度
使用CAP4软件,把明文复制进“Plaintext”文本框中,如图3-16所示。
图3-16 输入明文
2)生成密钥矩阵
执行“Ciphers”→“Playfair”命令,在弹出的对话框中输入密钥“crazy dog”,然后单击“Set Key”按钮,生成密钥矩阵,如图3-17所示。
图3-17 生成密钥矩阵
3)生成密文
单击“Encipher”按钮生成密文,如图3-18所示。
图3-18 生成密文
【动手做一做】
已知明文为“HIDE THE GOLD IN THE TREE STUMP”,现在以“PLAYFAIR EXAMPLE”为密钥,求使用Playfair密码加密得到的密文。
解:首先取“PLAYFAIR EXAMPLE”为密钥,构造密钥矩阵为
P L A Y F
IR E X M
B C D G H
K N O Q S
T U VW Z
要加密的明文两两字母分组为“HIDE TH EGOLDINTHE TR EX ESTUMP”,然后按照明文加密规则,得到密文“BM OD ZB XD NA BE KU DM UIXM MO UV IF”。
3.解密
Playfair解密算法首先将密钥填写在一个5×5的矩阵中(去Q留Z),矩阵中其他未用到的字母按顺序填在矩阵剩余位置中,由密文得到明文。
1)解密规则
解密规则如下:
(1)若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2左端的字母。其中最后一列被看作第一列的左方。
(2)若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2上方的字母。其中最后一行被看作第一行的上方。
(3)若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
2)解密练习
例3.1 已知密钥为“boys and girls are students”(按行填充密钥,不在同一行的明文字母,行不变列变),密文为“GUUID BCYXN YOETK RUGAB EMBCE TDICQ LDHYB JRMRD IRCV”,求明文。
例3.2 已知密钥为“father”(按行填充密钥,不在同一行的明文字母,行变列不变),密文为“OPHEN UMRFP EFPVI DLRGQ NRRNW RHKNR SVNYF HSVFI IJRQP AFK”,求明文。
4.Playfair密码破解难度分析
(1)优点:Playfair密码有26×26=676种字母对,因为字母出现的频率被均匀化,所以基于字母频率攻击难以实现。
(2)缺点:Playfair密码比简单移位密码相对安全一些,但是因为英文和其他语言中每个字母都有一定的使用频率,破解者根据字母使用频率就可以破解。每个明文字母在密文中仅对应5种可能的字母。系统可用双频率分析的方法进行破解。除非密钥很长,否则矩阵的剩余行是可以预测出来的。
具体的分析方法:在英语中最常用的连字有:th,he,an,in,re,er……,请注意:连字re和er都很常见。如果在密文中像ig和gi这样的字母对出现得比较多,一个很自然的猜测就是r,i,e,g这些字母在矩阵中为同一行或同一列,或形成一个长方形。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。