http://www.shiyanbar.com/ctf/1852
Fair-Play:
The quick brown fox jumps over the lazy dog!
ihxo{smzdodcikmodcismzd}
解:
背景和案例:
一种 Playfair密码变种加密方法如下:首先选择一个密钥单词(称为 pair)(字母不重复,且都为小写字母),
然后与字母表中其他字母一起填入至一个 5x5的方阵中,填入方法如下:
1.选取一个英文字作密钥。除去重复出现的字母。将密匙的字母逐个逐个加入5×5的矩阵内,(本题没有)剩下的空间将未加入的英文字母依a-z的顺序加入。
(将I和J视作同一字。JOY -> IOY)将要加密的讯息分成两个一组。
2.在每组中,找出两个字母在矩阵中的地方。
3.若两个字母同列,取这两个字母上下方的字母(若字母在最上方则取最下方的字母)。
4.若两个字母同行,取这两个字母左右方的字母(若字母在最左方则取最右方的字母)。
5.若两个字母不同行也不同列,在矩阵中找出另外两个字母,使这四个字母成为一个长方形的四个角(am->ob)。
6.新找到的两个字母就是原本的两个字母加密的结果。
如果密钥为 youandme,则该方阵如下:
y o u a n
d m e b c
f g h i j
k l p q r
s t v w x
在加密一对字母时,如 am,在方阵中找到以这两个字母为顶点的矩形(红色字体):
y o u a n
d m e b c
f g h i j
k l p q r
s t v w x
这对字母的加密字母为该矩形的另一对顶点,如本例中为 ob。
本题解析:
题目给出的一句话就是密钥-----应该尝试满足5*5正好。得到密钥矩阵:
T h e q u
i/j c k b r
o w n f x
m p s v l
a z y d g
3.解密ihxo{smzdodcikmodcismzd}
ih xo { sm zd od ci km od ci sm zd }注:本题若两个字母同行,取这两个字母左方的字母
ct fx { pl ay fa ir is fa ir pl ay}
最后得到了flag:ctfx{playfairisfairplay}