从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

转轮机加密详解两种解题方法 -攻防世界相关推荐

  1. 图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS)

    图文详解两种算法:深度优先遍历(DFS)和广度优先遍历(BFS) 阅读本文前,请确保你已经掌握了递归.栈和队列的基本知识,如想掌握搜索的代码实现,请确保你能够用代码实现栈和队列的基本操作. 深度优先遍 ...

  2. 7-1 寻找大富翁 (25 分)(思路加详解+两种做法(一种优先队列,一种vector容器))

    一:题目 胡润研究院的调查显示,截至2017年底,中国个人资产超过1亿元的高净值人群达15万人.假设给出N个人的个人资产值,请快速找出资产排前M位的大富翁. 输入格式: 输入首先给出两个正整数N(≤1 ...

  3. 详解两种C#自动实现DLL(OCX)控件注册的方法

    本文将为大家讲述DLL库自动注册的两种方法,包括调用Regsvr32方法等.希望通过本文能对大家有所帮助. 尽管MS为我们提供了丰富的.NET Framework库,我们的程序C#开发带来了极大的便利 ...

  4. 图片轮播的实现(详解两种方法)

    今天带来的是前端里图片轮播的实现,可以说,这两种方法都很简单,尤其第一种,只要是有点基础的应该都可以看懂,这也是小编花费了一定时间想到的代码较少的方式.(图片我放在文末了) 当然也有更复杂的图片,也会 ...

  5. 235、一个带宽如何连接两个路由器?详解两种方法

    于一个网络如何连接两个路由器?家里房间比较多,之前已经安装了一个无线路由器,但是在某些房间信号很差,想再增加一个无线路由器怎么办? 实现一个带宽连接两个路由器,有两种方法: 1.二级路由器 2.无线桥 ...

  6. 34. 在排序数组中查找元素的第一个和最后一个位置012(二分查找+思路+详解+两种方法)Come Baby!!!!!!!! !

    一:题目 给定一个按照升序排列的整数数组 nums,和一个目标值 target.找出给定目标值在数组中的开始位置和结束位置. 如果数组中不存在目标值 target,返回 [-1, -1]. 进阶: 你 ...

  7. JavaScript(JS)前序遍历,中序遍历,后序遍历,层序遍历,图文详解两种(递归与迭代)实现的方式

    1.二叉树的前序遍历 前序遍历首先访问根结点然后遍历左子树,最后遍历右子树. 在遍历左.右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树. 若二叉树为空则结束返回,否则: (1)访问根结点. ...

  8. linux修改文件内容_详解5种实用方法---Linux系统清空或删除大文件内容

    概述 有时我们在处理Linux终端中的文件时,可能要去清除文件的内容,而无需使用任何Linux命令行编辑器打开它.怎么才能实现呢?下面通过几种不同的方式教大家清空文件内容. 1.通过重定向到空来清空文 ...

  9. oracle数据库按日期查询,关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解...

    关于Oracle数据库日期范围查询的两种实现方法详解,oracle详解 Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设 ...

最新文章

  1. 简书显示服务器错误,openfire服务器异常处理
  2. 梯度下降法Gradient Descent深度学习 机器学习
  3. 信息系统项目管理师-知识管理知识点
  4. 老虎Sitemap生成器 0.3
  5. Codeforces Round #701 (Div. 2)赛后补题报告(A~D)
  6. 【转】JAVA 调用Web Service的方法
  7. python3连接oracle 11G数据库
  8. Docker : Docker安装Kibana报错 Unable to revive connection: http://localhost:9200 No living connections
  9. FFmpeg源代码简单分析:libswscale的sws_getContext()
  10. APP开发手记01(app与web的困惑)
  11. [网络安全自学篇] 八十五.《Windows黑客编程技术详解》之注入技术详解(全局钩子、远线程钩子、突破Session 0注入、APC注入)
  12. 电影购票c语言程序,C语言电影购票系统小样
  13. Opencv图像预处理
  14. android定义圆角layout,Android布局切圆角
  15. android 如何编译.so,Android源码中编译自己的so库
  16. 舔一舔 · 肌霸Kafka
  17. 有向加权图 最大弱连通分支_指数基金介绍专栏:指数基金的加权方式,你都知道哪些?...
  18. 数据库的锁机制理解和运用
  19. 天地水火雷风山泽 乾坤坎离震巽艮兑
  20. 行式 Excel 文件拆分

热门文章

  1. SAMBA服务和FTP服务讲解(week3_day1)--技术流ken
  2. 大数据治理需要具备哪些能力和关键技术?
  3. Windows Server 2008网络基础结构的实现与管理
  4. 《超越平凡的平面设计: 版式设计原理与应用》—色轮
  5. AUP2敏捷统一过程之一:序言及降低过程的总体拥有成本
  6. Unix整理笔记-vi简介-里程碑M8
  7. maven2学习总结(1,入门起步与实践)
  8. 【技术好文转载】为什么AI芯片是当今热点
  9. 【转】SAP Fiori Design Guidelines基础篇
  10. TCODE找相應的BAPI(主要是找到包PACKAGE)