由于在加密解密的过程中密文的排列形似栅栏,因此被称作栅栏密码。
【加密原理】
1、首先将明文交替排成上下两行,即奇数位置的字母写作一行,偶数位置的字母写作另一行。例如“tomorrow is another day”排成:
tmroiaohra
oorwsntedy
2、然后将下一行的字母排在上一行的后边,从而形成一段密文:tmroiaohraoorwsntedy
这仅仅是分成两行的情况,也可以将明文分成多行。例如同样的明文分成三行:
toosoea
orwatry
mrinhd
最后的密文是:toosoeaorwatrymrinhd
【解密原理】
1、确定每行的字符数。根据密文的长度和栅栏的行数,可以确定每行的字符数。上例中:
每行字符数 = 密文的长度20 / 栅栏组数3 = 6,余数2,不能整除的话,结果还需要+1,所以每行字符数为7。
2、然后按照每行字符数为7,将密文toosoeaorwatrymrinhd重新排列:
toosoea
orwatry
mrinhd
3、将上述数组由上至下,由左至右读取,从而恢复明文tomorrowisanotherday。
【代码实现】