![6fe72f9f28846daffee0aa3c24fbf6d6.png](https://i-blog.csdnimg.cn/blog_migrate/34ea9422cbf4d0ab81fcab62c36dbc10.png)
栅栏密码(Rail-fence Cipher)就是把要加密的明文分成N个字一组,然后把每组的第1个字符组合,每组第2个字符组合…每组的第N(最后一个分组可能不足N个)个字符组合,最后把他们全部连接起来就是密文。
02加密步骤我们以“I LOVE CTF”为例进行n=2的栅栏加密:
① 去掉空格,得到ILOVECTF.
② 因为n=2,所以我们以两个字母为一组,总共分成4组得到IL OV EC TF
③ 依次读取每组的第一个字母:IOET。完成后,再读取每组第二个字母:LVCF
④ 最后把这两列新得到的字符串组合在一起即完成加密:IOETLVCF
我们再以"Through love comes calm and through calm comes thought"进行n=5的加密:
首先去掉空格和逗号,然后依次以5个为一行可得下方阵列:
t h r o u
g h l o v
e c o m e
s c a l m
a n d t h
r o u g h
c a l m c
d m e s t
h o u g h
t
注意:由于分组的原因,最后一行只有第一列有字母为T,后四列为空。
然后我们依次读取第一列到第五列的字母,然后重新组合即完成加密。
密文:tgesarcohthhccnoamorloaduleuoomltgmsguvemhhcth
03 解密步骤通过以上两个例子,想必你已经掌握了栅栏密码的加密原理,所以我们可以通过逆推得到根据一串密文去还原原文的方法:
以"hltodeofrlcwl"(n=3)为例进行解密:
首先要还原为原文的加密阵列,还原时把密文依次按列来放置即可。一共有13个字母,13/3=4...1 可见要构建一个3列5行的阵列。
但是注意,我们发现还余1,说明原文(也是13个字母)在进行加密时,最后一行只有第一列是有字母的,最后一行后几列都为空,所以我们在还原原文的加密阵列时,第一列要有5个字母,往后的几列只要4个字母即可。如下图所示:
![4f2907312ef6adf870314ec263bf4d32.png](https://i-blog.csdnimg.cn/blog_migrate/02f1014c0978b5331edf8506423bb020.png)
所以可得原文:helloctfworld
如果不想这么麻烦:这个网站满足你:https://www.qqxiuzi.cn/bianma/zhalanmima.php
04每日一题小鱼:来吧!!!下一个灯谜:
请解密wcemteojcflmnc,n=3.
提交形式:flag{...}
先在草稿纸上做一遍,再用网站哦!!!
![5b32abbff234da4e3a814bc4d146f1e0.png](https://i-blog.csdnimg.cn/blog_migrate/827411280f2a01e1b2585907ba76ba7a.png)
![6fe72f9f28846daffee0aa3c24fbf6d6.png](https://i-blog.csdnimg.cn/blog_migrate/34ea9422cbf4d0ab81fcab62c36dbc10.png)