[CTF]栅栏密码学习
[CTF]栅栏密码学习
即把将要传递的信息中的字母交替排成上下两行,再将下面一行字母排在上面一行的后边,从而形成一段密码。栅栏密码是一种置换密码。 
  例如密文:TEOGSDYUTAENNHLNETAMSHVAED 
  解密过程:先将密文分为两行 
  T E O G S D Y U T A E N N 
  H L N E T A M S H V A E D 
  再按上下上下的顺序组合成一句话 
  THE LONGEST DAY MUST HAVE AN END. 
加深的
       密文为: 
  PFEE SESN RETM MFHA IRWE OOIG MEEN NRMA ENET SHAS DCNS IIAA IEER BRNK FBLE LODI 
  去掉空格:PFEESESNRETMMFHAIRWEOOIGMEENNRMAENETSHASDCNSIIAAIEERBRNKFBLELODI 
  共64个字符,以8个字符为一栏,排列成8*8的方阵(凯撒方阵): 
  P F E E S E S N 
  R E T M M F H A 
  I R W E O O I G 
  M E E N N R M A 
  E N E T S H A S 
  D C N S I I A A 
  I E E R B R N K 
  F B L E L O D I 
  从上向下竖着读:PRIMEDIFFERENCEBETWEENELEMENTSRESMONSIBLEFORHIROSHIMAANDNAGASAKI 
  插入空格:PRIME DIFFERENCE BETWEEN ELEMENTS RESMONSIBLE FOR HIROSHIMA AND NAGASAKI 
经典加密技术实例
经典加密主要采用了两种加密技术:替代技术和置换技术。
(1)替代技术
替代技术是将明文中的每个元素(字母、比特、比特组合或字母组合)映射为另一个元素的技术。明文的元素被其他元素所代替而形成密文。在经典加密技术中使用的元素一般为字母或数字。下面给出经典加密中几种有代表性的替代技术。
1)凯撒密码
凯撒密码是最早使用的替代密码。
定义1  凯撒密码将字母表视为一个循环的表,把明文中的字母用表中该字母后面第3个字母进行替代。凯撤密码的明文字母和密文字母的对应关系如下:
明文字母:a b c d e f g h I j k l m n o p q r s t u v w x y z
密文字母:DEFGHIJKLMNOPQRSTUVWXYZABC
若让每个字母对应一个数值(a=0,b=1,……,z=25),则该算法可以表示为:
。
定义2  将1算法一般化,即密文字母与明文字母的偏移可以是任意值,形成了所谓的移位密码,其算法可以表示为:
k就是加密算法的密钥,可以在1到25之间取值。解密算法可以表示为:
。
由于k的取值范围的限制,凯撒密码的密钥空间很小,难以抵御强行攻击密码分析。攻击者最多尝试25次,就一定能够破译密码。
2)单字母替代密码
为了加大凯撒密码的密钥空间,可以采用单字母替代密码。单字母替代密码是将密文字母的顺序打乱后与图文字母对应。
明文字母:a b c d e f g h I j k l m n o p q r s t u v w x y z
密文字母:OGR F C Y S A L X U B Z Q T W D V E H J M K P N I
此时的密钥空间大小为26!,约为4×1026。即使每微秒试一个密钥,也需要花费约1010年才能穷举所有的密钥。因此,强行攻击法不太适合。
3)Vigenere密码
Vigenere密码利用一个凯撤方阵来修正密文中字母的频率。在明文中不同地方出现的同一字母在密文中一般用不同的字母替代。
凯撒方阵的形式为:
A B C D E F G  …  Y Z
          B C D E F G H  …  Z A
          C D E F G H I  …  A B
          D E F G H I J  …  B C
                         …
          Z A B C D E F  …  X Y
加密时,使用一个通信双方所共享的密钥字母串(如:HAPPYTIME),将密钥字母串重复书写在明文字母的上方。对要加密的明文字母找到上方的密钥字母,然后比一下以确定凯撒方阵的某一行〔以该密钥字母开头的行〕。最后利用该行的字母表,使用凯撒密码的加密方法进行替代:
例如:
密钥:  H A P P Y T I E H A P P Y T I M
明文:  p l e a s e s e n d t h e d a t a
明文中的第一个e用凯撒方阵中的P行(PQRSTU…O)进行加密,因此被T替代;第二个e用方阵中的T行(TUVWX…S)进行加密,因此被X替代。
即使只选择凯撒方阵中的任意m行,Vigenere密码的密钥字的长度将是26m,穷举密钥空间将需要很长时间,例如m=5,密钥空间超过11000000,已经足以阻止手工穷举密钥搜索。在Vigenere密码中,一个字母能够映射成m个可能字母中的一个,这样的密码体制称为多表密码体制,一般情况下对多表密码体制的密码分析比单表困难。
(2)置换技术
置换是在不丢失信息的前提下对明文中的元素进行重新排列。
1)矩形转置密码
将明文写成矩形结构,然后通过控制其输出方向和输出顺序来获得密文。例如,明文please send the data在不同输出顺序下的密文如下图所示。矩形方阵上方的数字和字母串为代表输出顺序的密钥,字母串按字母顺序输出(AEFRT)。
输 出 顺 序
1  2  3  4  5
p  1  e  a  s
e     s  e  n
d     t  h  e
   d  a  t  a
 
输 入 方 向
 
输 出 顺 序
3  5  1  4  2
p  1  e  a  s
e     s  e  n
d     t  h  e
   d  a  t  a
 
输 入 方 向
 
输 出 顺 序
A  F  T  E  R
p  1  e  a  s
e     s  e  n
d     t  h  e
   d  a  t  a
 
输 入 方 向
 
密文:ped l  destaaehtsnea
 
密文:estasneaped eahtl  d
 
密文:ped aehtl  dsneaesta
 
图  矩形转置密码加密示意图
 
2)图形转置密码
一个三角形转置密码的例子如下图所示
e
h  a  v
h  a  r  r  y
o  k  s  d  o  e  s
h  o  w  m  a  n  y  b  o
 
输 入 方 向
 
输出方向
 
明文:how many books dose harry have
密文:OSYVEBERAYORHNDAASHMKWOOH
 
图  三角形转置密码加密示意图
 
http://www.sdpc.edu.cn/jpkc/wlaq/szal/aqslfx/sl7.htm
[CTF]栅栏密码学习的更多相关文章
- [CTF]栅栏密码
		
[CTF]栅栏密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
 - CTF之栅栏密码
		
栅栏密码是比较常见的加密方式之一,其原理是将一组明文分成N组,将每一组的第一个明文取出按照顺序组成一串密文,并将这段密文附在第一段密文之后,以此类推 例如: 分了两组,即秘钥为2: 明文:THERE ...
 - 栅栏密码(The Rail-Fence Cipher)详解
		
最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来 今天学习了栅栏密码,BugkuCTF里面的一道叫做"聪明的小羊"的题就与栅栏密码相关 特点 栅 ...
 - 困在栅栏里的恺撒WriteUp(附栅栏密码加密解密脚本)
		
题目地址:http://www.shiyanbar.com/ctf/1867 这道题目并不难,就是先用栅栏密码解密,然后再用恺撒密码解密就好. 1. 6代表了栅栏密码的栏数(说实话,一开始我也没看出来 ...
 - ctf古典密码从0到
		
本文首发于“合天智汇”公众号 作者:淡灬看夏丶恋雨 古典密码和现代密码的区别: 代换密码 单表代换密码 字符或数学型 凯撒密码 仿射密码 四方密码 培根密码 图表 标准银河字母 圣堂武士密码 猪圈密码 ...
 - CTF-Tools 一款CTF古典密码加解密工具
		
CTF-Tools 一款CTF古典密码加解密工具 工具截图 工具简介 一款CTF编码.解码.加密.解密工具. 支持的编码解码: URL-UTF-8 URL-GB2312 Unicode Escape( ...
 - 破解栅栏密码python脚本
		
今天遇到一个要破解的栅栏密码,写了个通用的脚本 #!/usr/bin/env python # -*- coding: gbk -*- # -*- coding: utf_8 -*- # Author ...
 - [CTF]当铺密码
		
[CTF]当铺密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
 - [CTF]培根密码
		
[CTF]培根密码 --------------------- 作者:adversity` 来源:CSDN 原文:https://blog.csdn.net/qq_40836553/articl ...
 
随机推荐
- 聊一聊和Nacos 2.0.0对接那些事
			
前言 nacos 2.0.0 已经发布了 alpha1, alpha2 和 beta 三个版本了,部分测试报告也已经出来了. Nacos2.0.0-ALPHA2 服务发现性能测试报告 Nacos 2. ...
 - MyBatis(三):自定义持久层框架实现
			
代码已上传至码云:https://gitee.com/rangers-sun/mybatis 新建Maven工程 架构端MyPersistent.使用端MyPersistentTest,使用端引入架构 ...
 - HDU_3359 Kind of a Blur 【浮点型高斯消元+BFS】
			
一.题目 Kind of a Blur 二.分析 题目读起来挺费劲的. 主要就是要求一个矩阵,其中每个点及其于这个的曼哈顿距离小于D的点的值总和的平均值就是新生成的矩阵. 给定新生成的矩阵,求初始矩阵 ...
 - SSM-员工管理项目实战-CRUD-增删改查
			
SSM-CRUD 一.项目简介 主界面演示 功能点 分页 数据校验 ajax Rest 风格的 URI 技术点 基础框架 - ssm(Spring + SpringMVC + MyBatis) 数据库 ...
 - PHP并发抢购解决方案
			
Mysql版 逻辑步骤 mysql存储引擎使用Innodb 开始事务,查询商品库存并加上共享锁 判断库存是否足够,进行商品/订单/用户等操作 提交事务,完成下单抢购 代码参考 // 关闭自动提交 $t ...
 - node_exporter自定义监控
			
背景 我们在使用Zabbix的时候,可以自己写自定义脚本.在使用Promethues的时候,有很多的exporter,但是有一些特殊的情况没有,比如,我需要监控进程一启动就告警,但是进程没启动,是使用 ...
 - irace package -- 参数调优神器
			
目录 1. irace 是什么 2. 安装 irace 3. irace 的运行机制 4. irace 的配置环境 4.1. parameters 4.2. target algorithm runn ...
 - 第2课:操作系统网络配置【DevOps基础培训】
			
第2课:操作系统网络配置 --DevOps基础培训 1. DNS配置 1.1 什么是DNS? 域名系统(英文:Domain Name System,缩写:DNS)是互联网的一项服务.它作为将域名和IP ...
 - HTML5获取地理位置定位信息
			
如何使用HTML5地理位置定位功能 定位功能(Geolocation)是HTML5的新特性,因此只有在支持HTML5的现代浏览器上运行,特别是手持设备如iphone,地理定位更加精确.首先我们要检测用 ...
 - element Notification 通知文字换行小技巧
			
this.$notify({ title: "通知", message: res.result, iconClass: "el-icon-bell",//自定义 ...