Cipher(playfair加密)
题目
还能提示什么呢?公平的玩吧(密钥自己找) Dncnoqqfliqrpgeklwmppu 注意:得到的 flag 请包上 flag{} 提交, flag{小写字母}
解题思路
看到密文第一反应是凯撒加密,然后尝试了凯撒枚举但是所有偏移量下的结果都没出现正确答案
从题目中没有找到思路,因此上网学习了一波发现有一种加密方式就叫playfair加密,是一种多表代换加密。这里给出解密网站:
http://rumkin.com/tools/cipher/playfair.php
这种加密需要密钥,题目中说密钥自己找,密钥就在"公平的玩吧"里面,同样也是playfair
解密得到Itisnotaproblemhavefun。当然根据题目要求,最后须转换成小写字母。
flag
flag(itisnotaproblemhavefun)
知识点:
Playfair算法
Playfair算法是多表代换加密方式中最著名的一种,属于经典对称加密方式,1854年由英国科学家Chaeles W发明。曾经在相当长的一段时期内,Playfair算法被认为是一种牢不可破的加密方法。在网络安全、数据加密等方面,其加密思想被广泛应用。Playfair密码是把明文中的双字母音节作为一个单元并将其转换为密文的一种加密算法,原算法可用的字母对有26×26个,虽然比明文有着稍为平坦的频率分布曲线,但密文中仍透露了大量的信息给密码分析者。
Playfair算法是把明文中的双字母作为一个单元,将其转换为密文的双字母,转换依据由密钥所构成的5×5字母矩阵。
1、编制密码表
编一个55的密码表,共有5行5列字母。第一列(或第一行)是密钥,其余按照字母顺序,如果密钥过长可占用第二列或行。密钥是一个单词或词组,若有重复字母,可将后面重复的字母去掉。当然也要把使用频率最少的字母去掉(它依据一个55的正方形组成的密码表来编写,密码表里排列有25个字母。如果一种语言字母超过25个,可以去掉使用频率最少的一个。如,法语一般去掉w或k,德语则是把i和j合起来当成一个字母看待,英语中z使用最少,可以去掉它)。
2、整理明文/密文,将明文/密文每两个字母组成一对。如果成对后有两个相同字母紧挨或最后一个字母是单个的,就插入一个字母X(或者Q)。
密文: KQSAMFPAOPMFPA
KQ SA MF PA OP MF PA
3、解密规则
(1) 若c1 c2在同一行,对应明文p1 p2分别是紧靠c1 c2 左端的字母。其中最后一列被看做是第一列的左方。
(2) 若c1 c2在同一列,对应明文p1 p2分别是紧靠c1 c2 上方的字母。其中最后一行被看做是第一行的上方。
(3)若c1 c2不在同一行,不在同一列,则p1 p2是由c1 c2确定的矩形的其他两角的字母。
密文:KQ SA MF PA OP MF PA
明文:dk ay fn ir mo fn ir
4、加密规则
(1)若p1 p2在同一行,对应密文c1 c2分别是紧靠p1 p2 右端的字母。其中第一列被看做是最后一列的右方。如,按照前表,fg对应gj,mr对应om
(2) 若p1 p2在同一列,对应密文c1 c2分别是紧靠p1 p2 下方的字母。其中第一行被看做是最后一行的下方。如,按照前表,dk对应kq,ou对应uh
(3)若p1 p2不在同一行,不在同一列,则c1 c2是由p1 p2确定的矩形的其他两角的字母(至于横向替换还是纵向替换要事先约好,或自行尝试)。如,按照前表,ir对应pa或ap。