转轮机加密详解两种解题方法 -攻防世界
从19世纪20年代,人们开始发明各种机械加密设备对数据进行加密处理,最为著名的是转轮机和转轮加密算法,转轮密码机在二战期间使用极为广泛。
转轮密码机是由一个输入键盘和一组转轮组成,每个转轮上标有有26个字母,字母的的顺序随意。转轮之间由齿轮进行连接,当一个转轮转动的时候,可以将一个字母转化成另外一个字母。
题目特点:加密表每一行都有 26 个不同的字母,密钥的长度、密文长度、表格的行数都是 13,密文中字母是有重复字母的。
解题:方法一(手动)
把内容按照 2,3,7,5,13…行按顺序排列,
NACZDTRXMJQOYHGVSFUWIKPBEL
FHTEQGYXPLOCKBDMAIZVRNSJUW
QGWTHSPYBXIZULVKMRAFDCEONJ
KCPMNZQWXYIHFRLABEUOTSGJVD
SXCDERFVBGTYHNUMKILOPJZQAW
EIURYTASBKJDFHGLVNCMXZPQOW
VUBMCQWAOIKZGJXPLTDSRFHENY
OSFEZWAXJGDLUBVIQHKYPNTCRM
QNOZUTWDCVRJLXKISEFAPMYGHB
OWTGVRSCZQKELMXYIHPUDNAJFB
FCUKTEBSXQYIZMJWAORPLNDVHG
NBVCXZQWERTPOIUYALSKDJFHGM
PNYCJBFZDRUSLOQXVETAMKGHIW
第一列的内容即为密文,按照列读找flag,找到了 fireinthehole
方法二:脚本
import re
sss='''1: < ZWAXJGDLUBVIQHKYPNTCRMOSFE < 2: < KPBELNACZDTRXMJQOYHGVSFUWI < 3: < BDMAIZVRNSJUWFHTEQGYXPLOCK < 4: < RPLNDVHGFCUKTEBSXQYIZMJWAO < 5: < IHFRLABEUOTSGJVDKCPMNZQWXY < 6: < AMKGHIWPNYCJBFZDRUSLOQXVET < 7: < GWTHSPYBXIZULVKMRAFDCEONJQ < 8: < NOZUTWDCVRJLXKISEFAPMYGHBQ < 9: < XPLTDSRFHENYVUBMCQWAOIKZGJ < 10: < UDNAJFBOWTGVRSCZQKELMXYIHP < 11 < MNBVCXZQWERTPOIUYALSKDJFHG < 12 < LVNCMXZPQOWEIURYTASBKJDFHG < 13 < JZQAWSXCDERFVBGTYHNUMKILOP <
'''
m="NFQKSEVOQOFNP"
content=re.findall(r'< (.*?) <',sss,re.S)
iv=[2,3,7,5,13,12,9,1,8,10,4,11,6]
vvv=[]
ans=""
for i in range(13):index=content[iv[i]-1].index(m[i])vvv.append(index)
for i in range(0,26):flag=""for j in range(13):flag+=content[iv[j]-1][(vvv[j]+i)%26]print flag
转轮机加密详解两种解题方法 -攻防世界相关推荐
- 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)
图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) 阅读本文前,请确保你已经掌握了递归.栈和队列的基本知识,如想掌握搜索的代码实现,请确保你能够用代码实现栈和队列的基本操作. 深度优先遍 ...
- 7-1 寻找大富翁 (25 分)(思路加详解+两种做法(一种优先队列,一种vector容器))
一:题目 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁. 输入格式: 输入首先给出两个正整数N(≤1 ...
- 详解两种C#自动实现DLL(OCX)控件注册的方法
本文将为大家讲述DLL库自动注册的两种方法,包括调用Regsvr32方法等.希望通过本文能对大家有所帮助. 尽管MS为我们提供了丰富的.NET Framework库,我们的程序C#开发带来了极大的便利 ...
- 图片轮播的实现(详解两种方法)
今天带来的是前端里图片轮播的实现,可以说,这两种方法都很简单,尤其第一种,只要是有点基础的应该都可以看懂,这也是小编花费了一定时间想到的代码较少的方式.(图片我放在文末了) 当然也有更复杂的图片,也会 ...
- 235、一个带宽如何连接两个路由器?详解两种方法
于一个网络如何连接两个路由器?家里房间比较多,之前已经安装了一个无线路由器,但是在某些房间信号很差,想再增加一个无线路由器怎么办? 实现一个带宽连接两个路由器,有两种方法: 1.二级路由器 2.无线桥 ...
- 34. 在排序数组中查找元素的第一个和最后一个位置012(二分查找+思路+详解+两种方法)Come Baby!!!!!!!! !
一:题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你 ...
- JavaScript(JS)前序遍历,中序遍历,后序遍历,层序遍历,图文详解两种(递归与迭代)实现的方式
1.二叉树的前序遍历 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 在遍历左.右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根结点. ...
- linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容
概述 有时我们在处理Linux终端中的文件时,可能要去清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么才能实现呢?下面通过几种不同的方式教大家清空文件内容. 1.通过重定向到空来清空文 ...
- oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...
关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...
最新文章
- 简书显示服务器错误,openfire服务器异常处理
- 梯度下降法Gradient Descent深度学习 机器学习
- 信息系统项目管理师-知识管理知识点
- 老虎Sitemap生成器 0.3
- Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
- 【转】JAVA 调用Web Service的方法
- python3连接oracle 11G数据库
- Docker : Docker安装Kibana报错 Unable to revive connection: http://localhost:9200 No living connections
- FFmpeg源代码简单分析:libswscale的sws_getContext()
- APP开发手记01(app与web的困惑)
- [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
- 电影购票c语言程序,C语言电影购票系统小样
- Opencv图像预处理
- android定义圆角layout,Android布局切圆角
- android 如何编译.so,Android源码中编译自己的so库
- 舔一舔 · 肌霸Kafka
- 有向加权图 最大弱连通分支_指数基金介绍专栏:指数基金的加权方式,你都知道哪些?...
- 数据库的锁机制理解和运用
- 天地水火雷风山泽 乾坤坎离震巽艮兑
- 行式 Excel 文件拆分