CTF 【每日一题20160606】

这篇博客介绍了CTF中的一道题目,涉及栅栏加密方法。内容包括加密原理、解密的复杂性以及具体案例分析。通过解密过程,得出答案为wctf{zjbgcmtn}。
摘要由CSDN通过智能技术生成

聪明的小羊

一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏...

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:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值