聪明的小羊
一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏...
tn cjtfsiwal kes,hwitbn g,npt ttessfg}ua u hmqik e {c, n huiouosarwzmiibecesnren.
请回答你所能看到的,答案形式cwtf{你的答案}
分析
里面出现了栅栏一词,那可能是“栅栏”加密。
栅栏加密法是一种比较简单快捷的加密方法。
栅栏加密就是将明文按照顺序分成n组,然后将这n组,组合成一个密文。
比如以加密字符串“abcdefghijklm”为例
分成3组,加密过程如下:
a |
d |
g |
j |
m |
b |
e |
h |
k |
|
c |
f |
i |
l |
|
得到密文:adgjmbehkcfil
如果分成4组,那么结果如下:
a |
e |
i |
m |
b |
f |
j |
|
c |
g |
k |
|
d |
h |
l |
|
得到密文:aeimbfjcgkdhl
加密是,以行优先,来生产数组(fence为分组数),那么从一个字符的位置加上fence的就等于密文中下一个字符的位置,例如pos(a)+4=pos(e)。所有加密算法大致如下:
#! /usr/bin/env python # -*- coding: utf-8 -*- ''' 20160605 栅栏加密算法简单实现 栅栏加密就是将明文按照顺序分成n组,然后将这n组,组合成一个密文。 如果字符数目不足,就要补以空格。 '''
s = raw_input("pl input a string:")#要求输入源串,并去掉两边空格 s.strip() fence = input("pl input the fence number:")#分组数(大于2) encodes = '' len = len(s) spacenum = len % fence f = open("./t0605.txt", 'w+') #打开存放结果的文件 for i in xrange(fence): j = i while j < len+spacenum: if j < len: |