栅栏密码:百度百科
把m*n长度个字符串分成n个一组,共m组。每次(共n次)取每组的第i个字符,连起来组成密文。
假设原文 abcdefghijklmno (15个)
加密:
a b c d e
f g h i j
k l m n o
密文:
afk bgl chm din ejo
说白了就是数组。
注意,有的时候空格问题很值得关注。
ctf实例:聪明的小羊
#栅栏密码
s= 'tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren.'
print len(s) #85 17*5 5*17
num = 17
length = 5
for i in range(num):
for j in range(length):
print s[17*j+i], #不换行输出