栅栏密码(The Rail-Fence Cipher)详解
最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来
今天学习了栅栏密码,BugkuCTF里面的一道叫做“聪明的小羊”的题就与栅栏密码相关
特点
栅栏密码与其他的密码加密方式不太一样,它是直接对明文中的内容进行置换操作
并不涉及明文中内容的改变!
加密方式一:
按对角线的顺序写出明文,再以行的顺序读出作为密文
明文:thank you for your arrival
对角线写出:
t a k o f r o r r v a
h n y u o y u a r i l
按行写出密文:
takofrorrvahnyuoyuaril
其中行代表了加密的深度,上面是两行,所以加密的深度是2,如果深度增加,只要对角线的长度也增加即可
加密方式二
由于上面的加密方式不涉及密钥,显得易于破解
于是便有了一种需要密钥的更复杂的方案:
即将明文一行行写出,呈矩形排列,然后将列的次序打乱,最后以列的次序读出。
而密钥就是列的次序
如下图:
关于这种加密的解密方式(其实不难)
只要将密文的数量n进行因式分解,重新排列成不同的矩阵,再进行相应的处理即可
更进一步地:只要再次进行几次这样的置换,整个矩阵就会和原来的矩阵相差很大,解密者就难以将其重构还原(下面再贴张图)
好了,写到这里就结束了,平时大家还是要多多训练观察能力嗷!
从此人间江湖,多出一个酒鬼少年郎。