古典密码 --- 实验吧

首先,题目中只给了一组数字,提示中告诉我们方法就在表面,所以我就开始研究这组数据,你可以发现这些数据都不超过127,因此,我猜想这应该是ASC码,转换完后得到结果如下:

得到转换后的结果:OCU{CFTELXOUYDECTNGAHOHRNFIENM}IOTA

高高兴兴的以为就是这个,提交后却告诉我是错误的,我知道这没有那么简单,看到{前面正好是三个字母OCU,以为会是凯撒密码

,可惜OCU是无法通过移位来得到CTF的,又看到字母中有CTF,感觉像是栅栏加密,可尝试后得到的结果都很离谱,最后经过了大神的提示后才知道了解决办法:

其实这题考察的是古典密码最基础的加密:列置换

首先什么是列置换:将明文按固定长m进行分组,在密钥控制下按某一顺序交换列,最后按列优先的顺序依次读出,即产生了密文;

分析上面的结果知总共有35个字母,可以分成7 * 5的,

OCU{CFT

ELXOUYD

ECTNGAH

OHRNFIE

NM}IOTA

很幸运,第一行就有CTF,所以先将第一行进行列置换,其他行只要按照第一行的顺序就行,

你会发现第一行中有两个C,所以进行分类讨论:

第一种情况:第二列的C提前

又因为OU还不能确定,再分类讨论:

1----2764513

2----2764531

第二种情况:第五列的C提前

因为OCU位置都不确定,所以分六种情况

1--------5764123

2--------5764132

3--------5764213

4--------576231

5--------576312

6--------576321

挨个结果试一试,得到最终结果顺序:2764513

你可能感兴趣的:(网络安全之密码学)