栅栏加密 国内国外不一样?

这是一道CTF题引发的思考

很多国内的博客包括百度百科说的栅栏加密是这样的

 1 2 3 4 5 6 # key=3 进行栅栏加密

 1 2 3
 4 5 6

结果为 1 4 2 5 3 6

但是在查国外的栅栏加密(Rail-fence Cipher)

1 2 3 4 5 6 # key=3 Rail-fence Cipher

1 . . . 5 .
. 2 . 4 . 6
. . 3 . . .

结果为 1 5 2 4 6 3

http://www.practicalcryptography.com/ciphers/classical-era/rail-fence/

为什么会想到查这个?

按照第一种加密方式,也就是国内普遍定义的(当然有些博客除外)

  假设:

    有字符串C,len(C) = n, n = p * q

  则有:

    C 栅栏加密(key=p) == C栅栏加密(key=q)

  具体例子:

即 123456栅栏加密(key=2) => 135246

123456 栅栏解密(key=3) =>135246

两个结果相同

也就是说,按照这种定义,是存在另一个key值,使得加密解密效果相同,可以称其为“补key”,(好吧我瞎起的名,理解就好)

如果某字符串C,是使用这种定义方式,不管是用key加密或者解密,我都可以一直使用栅栏解密,遍历key范围[2,len(C)-1],暴力求解。

有的工具是分解len(c)的因子,把除1以外的因子,当做key,进行暴力求解。

我说的是比较广义的,即对len(C)的因子不包括key的情况,涉及到对C的padding

1234567    key=4 加密

padding:1234567x (4|8  key|len(c))拆分:(1,2,3,4)(5,6,7,x)
1 2 3 4
5 6 7 x

结果为1526374(padding的x跳过)

------------------------------------

1526374    key=4 解密

padding:1526374x (4|8  key|len(c))
拆分:(1,5)(2,6)(3,7)(4,x)
1 2 3 4
5 6 7 x

结果为1234567(padding的x跳过)

-----------------------------------

为什么扯这些,是因为有一道题,经过这种遍历key的办法无法还原

例如:

fiasl_miasp_galn{_e_te}xh

长度为25

根据因子是不行的,只能爆破key

你会发现,1试到24都不能拿到正确的flag

failans{l__em_itaes}px_hg
fs_ipea__sgtlae_l}mnxi{ha
fia_ialtasnesp{}l__x_gehm
f_pntim_{eaig_}saaexlsl_h
f_sa_eimple}ai_n_xsag{thl
flag{_}i_sa_txampleehsi_n
flipa{_}i_a_l_txamsgneehs
fsmsgneexilipa{_}ha_a_l_t
fsmsgn__exilipa{et}ha_a_l
fsms_an__exilipgl{et}ha_a
fs_is_an__exilmapgl{et}ha
falmapgl{et}his_is_an__ex
falmapgl{et}xhis_is_an__e
falmapgl{ete}xhis_is_an__
falmapgl{e_te}xhis_is_an_
falmapgl{_e_te}xhis_is_an
falmapgln{_e_te}xhis_is_a
falmapgaln{_e_te}xhis_is_
falmap_galn{_e_te}xhis_is
falmasp_galn{_e_te}xhis_i
falmiasp_galn{_e_te}xhis_
fal_miasp_galn{_e_te}xhis
fasl_miasp_galn{_e_te}xhi

  

因为这个串采用的是第二种方式,

并且这种方式是不存在 ‘补key‘的

只能用第二种方式key=3进行加密才能还原,对是加密!

 fiasl_miasp_galn{_e_te}xh (Rail-fence Cipher 加密 key= 3)

=>

flag{this_is_an__example}


方式二的 在线工具

http://ctf.ssleye.com/railfence.html

原文地址:https://www.cnblogs.com/vastian/p/9460517.html

时间: 2024-12-21 08:01:40

栅栏加密 国内国外不一样?的相关文章

众筹模式国内国外冰火两重天 国内众筹逼上转型

众筹的形式有很多种,其中最为人们熟悉的是“产品众筹”.2012年,因为Pebble等硬件产品在Kickstarter(美国最火热的众筹平台)上的快速火爆,通过众筹来开发产品.宣传产品的模式为人所熟知,随后,很多知名智能硬件产品都通过众筹的方式第一次和人们见面.虽然今年鲜有非常亮眼的智能硬件产品在美国众筹平台出现,但这一模式已得到了广泛认可. 在国内,众筹的概念虽然广为人知,但众筹平台以及通过众筹发布的产品并不像国外那样火爆.这和国内智能硬件创业面临的问题很相似:概念火,但产品却难以令人满意. 一

国内国外最好的java开发论坛及站点 [转]

国内: www.chinajavaworld.com -论坛人很多,高手也多,不过好像都在潜水    www.cn-java.com -也很不错,文章很好,但是就是商业性浓了点.    www.chinaitlab.com- 非常有系统性,而且推出的java远程教育是中国最全面的scjp远程教育.www.huihoo.com -灰狐动力,有个jfox,而且很多关于企业级应用的东西 www.iteye.com/-要做最棒的软件开发交流社区,新发现的,人气还行.关注中www.matrix.org.c

Win7下连接VPN后,采用添加路由方式自动区分国内国外

转:http://www.chinagfw.org/2012/03/vpn.html 连接VPN后有两大问题:1.国内部份网站打不开或打开慢:2.耗费VPN流量 连接上VPN使用效果: 步骤: 1.修改路由表 下载 pre_created_for_win.zip 解压,以管理员身份运行 vpnup.bat(注意一定要在连接VPN之前运行该文件).如果不以管理员身份运行,会报“The requested operation requires elevation.” 每添加一条正确的路由则会显示一条

国内国外MD5在线解密站点

-http://www.cmd5.com/english.aspx (457,354,352,282) - http://www.md5crack.com - http://www.hashchecker.com - http://md5cracker.tk/ (MD5 Search engine by searches a total of 14 on-line crackers.) - http://www.md5decrypter.com (5,889,729) - http://www.

栅栏加解密python实现(支持密钥加密)

栅栏加解密是对较短字符串的一种处理方式.给定行数Row,依据字符串长度计算出列数Column,构成一个方阵. 加密过程:就是按列依次从上到下对明文进行排列,然后依照密钥对各行进行打乱.最后以行顺序从左至右进行合并形成密文. 解密过程:将上述过程进行逆推,对每一行依据密钥的顺序回复到原始的方阵的顺序,并从密文回复原始的方阵,最后按列的顺序从上到下从左至右解密. 详细实现例如以下:全部实现封装到一个类RailFence中,初始化时能够指定列数和密钥,默认列数为2,无密钥.初始化函数例如以下: def

VPN国内与国外网站转发至不同的DNS服务器解析,国内IP不经VPN

.title { text-align: center; margin-bottom: .2em } .subtitle { text-align: center; font-size: medium; font-weight: bold; margin-top: 0 } .todo { font-family: monospace; color: red } .done { font-family: monospace; color: green } .priority { font-fami

CTF中那些脑洞大开的编码和加密

0x00 前言 正文开始之前先闲扯几句吧,玩CTF的小伙伴也许会遇到类似这样的问题:表哥,你知道这是什么加密吗?其实CTF中脑洞密码题(非现代加密方式)一般都是各种古典密码的变形,一般出题者会对密文进行一些处理,但是会给留一些线索,所以写此文的目的是想给小伙伴做题时给一些参考,当然常在CTF里出现的编码也可以了解一下.本来是想尽快写出参考的文章,无奈期间被各种事情耽搁导致文章断断续续写了2个月,文章肯定有许多没有提及到,欢迎小伙伴补充,总之,希望对小伙伴们有帮助吧! 0x01 目录 1 2 3

Java-密码加密

介绍两种密码加密的方法: 这两种很常见可以再百度随意找到. 1.摩斯密码:说道密码加密不得不提的方法.很是经典. 首先说一下他的对照表,直接上图. 核心思想就是替换明文密码,将字符对应的替换成-与.两种符号的组合: 2.栅栏密码: 所谓栅栏密码,就是把要加密的明文分成N个一组,然后把每组的第1个字连起来,形成一段无规律的话. 不过栅栏密码本身有一个潜规则,就是组成栅栏的字母一般不会太多.(一般不超过30个,也就是一.两句话) 这个没有什么好说的了,举个栗子:对明文ASDFGHJKL进行加密;分成

程序员应具备的素质(国内的大多程序员生产力不够,所以只能早早转行)

学习编程已经有10个年头了,在这10年里,我做个不少软件项目,有大有小,写过基于单片机的裸奔式的嵌入式软件,写过基于os(linux.rtems.linux)的嵌入式软件,做过windows驱动开发,开发个windows应用软件,这一路走来,发现在国内程序员并不受尊重,程序员往往寿命很短,不到30岁就的转行,大家一致认为程序员是it民工,再来看看国外的程序员40岁都能活跃在编程一线,是大家羡慕的朝阳行业,为什么国内国外程序员会有如此天壤之别呢?说白了国内的大多程序员生产力不够,没有创造出作为一名