栅栏密码(The Rail-Fence Cipher)详解
最近训练CTF的时候,发现密码学这块的知识不太系统,所以自己接下来会陆陆续续整理出来
今天学习了栅栏密码,BugkuCTF里面的一道叫做“聪明的小羊”的题就与栅栏密码相关
特点
栅栏密码与其他的密码加密方式不太一样,它是直接对明文中的内容进行置换操作
并不涉及明文中内容的改变!
加密方式一:
按对角线的顺序写出明文,再以行的顺序读出作为密文
明文:thank you for your arrival
对角线写出:
t a k o f r o r r v a
h n y u o y u a r i l
按行写出密文:
takofrorrvahnyuoyuaril
其中行代表了加密的深度,上面是两行,所以加密的深度是2,如果深度增加,只要对角线的长度也增加即可
加密方式二
由于上面的加密方式不涉及密钥,显得易于破解
于是便有了一种需要密钥的更复杂的方案:
即将明文一行行写出,呈矩形排列,然后将列的次序打乱,最后以列的次序读出。
而密钥就是列的次序
如下图:

关于这种加密的解密方式(其实不难)
只要将密文的数量n进行因式分解,重新排列成不同的矩阵,再进行相应的处理即可
更进一步地:只要再次进行几次这样的置换,整个矩阵就会和原来的矩阵相差很大,解密者就难以将其重构还原(下面再贴张图)

好了,写到这里就结束了,平时大家还是要多多训练观察能力嗷!
栅栏密码(The Rail-Fence Cipher)详解的更多相关文章
- (总结)Linux下的暴力密码在线破解工具Hydra详解
(总结)Linux下的暴力密码在线破解工具Hydra详解 学习了:https://blog.csdn.net/yafeichang/article/details/53502869
- (转)高强度密码管理软件KeePass使用详解
转自:http://www.ruancan.com/ 算下来,你接触电脑有多久了?从第一次上网,到今天,你一共申请了多少个网站或者软件的帐号?相信这是一个几乎无人能够回答的问题. 无数人面临着这两个问 ...
- mysql基础之mariadb的安装,连接,用户,密码,权限设置语句详解
一.mariadb安装 1.配置mariadb源: [root@ren7 ~]# vim /etc/yum.repos.d/mariadb.repo [mariadb] name = MariaDB ...
- 接口测试之HTTP协议详解
引言 HTTP是一个属于应用层的面向对象的协议,由于其简捷.快速的方式,适用于分布式超媒体信息系统.它于1990年提出,经过几年的使用与发展,得到不断地完善和扩展.目前在WWW中使用的是HTTP/1. ...
- java基础之JDBC一:概述及步骤详解
1. JDBC的简介 概述: 就是Java用来操作不同数据库(DBMS)的类库(技术), 本质就是一些类和接口. /* 类: DriverManager 接口: Driver, Connection, ...
- MySQL的用户密码过期功能详解
MySQL的用户密码过期功能详解 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 先说明两个术语. Payment Ca ...
- Android高效率编码-第三方SDK详解系列(二)——Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能
Android高效率编码-第三方SDK详解系列(二)--Bmob后端云开发,实现登录注册,更改资料,修改密码,邮箱验证,上传,下载,推送消息,缩略图加载等功能 我的本意是第二篇写Mob的shareSD ...
- CentOS Linux release 7.3破解密码详解
CentOS Linux release 7.3破解密码详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 公司最近接了一个项目,拿到客户现有的源代码,但是服务器用户密码并不知情, ...
- Linux指令详解useradd groupadd passwd chpasswd chage 密码修改
Linux指令详解useradd groupadd passwd chpasswd chage 密码修改 http://speediness.blog.51cto.com/760841/1783661 ...
随机推荐
- 『心善渊』Selenium3.0基础 — 13、Selenium操作下拉菜单
目录 1.使用Selenium中的Select类来处理下拉菜单(推荐) 2.下拉菜单对象的其他操作(了解) 3.通过元素二次定位方式操作下拉菜单(重点) (1)了解元素二次定位 (2)示例: 页面中的 ...
- UnityWebRequest使用总结
using System.Collections; using UnityEngine; using UnityEngine.Networking; /// <summary> /// 网 ...
- 阿里P7大佬带你解密Sentinel
概述 在接连写了两篇关于限流的文章(<面试补习>- 你来说说什么是限流?, 限流神器Sentinel,不了解一下吗?)后,总感觉还差最后一点内容来闭环整个限流相关的内容,这两天在翻查相关文 ...
- Nexus3配置yum私服
传送门==>>Nexus私服搭建教程 yum私服的优点: >节省公网带宽 >离线安装等 1. 创建Blob Stores 2. 创建仓库 2.1 创建yum代理(aliyun样 ...
- 资源:jenkins下载路径
Jenkins版本下载路径 所有版本:http://mirrors.jenkins.io/war/
- PHP安装amqp扩展 出现未装librabbitmq错误
这错误的原因是因为没有安装amqp的依赖包rabbitmq-c,需要先安装rabbitmq-c. 1.安装rabbitmq-c-0.7.1 没有安装就会提示上面的错误我选择的是最新版本0.7.1 wg ...
- 1.3.2、通过Cookie匹配
server: port: 8080 spring: application: name: gateway cloud: gateway: routes: - id: guo-system4 uri: ...
- edraw max for mac 安装
1.下载网址:https://xclient.info/s/edraw-max.html#versions 2.安装断网安装,直接打开 .dmg文件安装 3.按照阅读文件中的第二步,将opt.cell ...
- C语言相关知识
1.指针:在程序中定义了一个变量,在进行编译时就会给该变量再内存中分配一个地址,通过访问这个地址可以找到所需变量,这个变量的地址成为该变量的指针.指针看作是内存中的一个地址,多数情况下,这个地址是内存 ...
- FreeRTOS-00-基础知识+任务创建删除
1 说明 本文仅作为学习FreeRTOS的记录文档,作为初学者肯定很多理解不对甚至错误的地方,望网友指正. 1.1 简介 FreeRTOS是一个RTOS(实时操作系统)系统,支持抢占式.合作式和时间片 ...