本章图片来源于网络

什么是Enigma
Enigma是由亚瑟·谢尔比乌斯于20世纪初发明的一种能够进行加密解密的机器。Enigma在德语里是“谜”的意思。亚瑟·谢尔比乌斯使用能够转动的圆盘和电路,创造成了人类手工所无法实现的高强度密码。在刚刚发明之际,Enigma被用在了商业领域,后来到了纳粹时期,德国国防军采用了Enigma,并将其改良后进行了军事用途。
用Enigma进行通讯加密
发送者和接受则各自拥有一个Enigma。发送者用Enigma将明文加密,将生成密文通过无线电发送给接收者。接收者将接收到的密码用自己的Enigma解密。由于发送者和接收者必须使用相同的密钥才能完成加密通信,所有发送者和接收者会实现收到一份叫做国防军密码本的册子。(每日一码
用Enigma进行加密通信的过程
发送者—>消息(明文)—>加密(国防军密码本中的“每日密码”)—>密文—————通过无线电通信———>密文---->解密(国防军密码本中的“每日密码”)---->消息(明文)—>接收者

Enigma的构造
Enigma能够对字母表26个字母进行加密解密由于复杂程度,简化为4个

摁下输入键盘上的一个键后,带你信号就会通过复杂的电路,最终点亮输出用的灯泡。
接线板是一种通过改变接线方式来改变字母的对应关系的部件。接线板上的接线方式是根据国防军密码本的每日密码来决定的。
在电路中,我们还能看到三个转子的部件。转子是一个圆盘状的装置其两侧的接触点之间通过电线相连。尽管每个转子内部的连接方式是无法改变的,但转子可以在没输入一个字母时自转。当输入一个字母是,转子1就旋转1/4圈(4是由多少个字母决定的),转子1每旋转1圈,转子2就旋转1/4圈,转子2每旋转1圈,转子3就旋转1/4圈.这三个转子都是可以拆卸的,在对Enigma进行设置的时候可以选择转子的顺序以及它们的初始位置。
示意图中我们只画了六个键,下面的示意图表示了连续键入3个b的情况:当第一次键入b时,信号通过转子中的连线,灯A亮起来,放开键后,转子转动一格,各字母所对应的密码就改变了;第二次键入b时,它所对应的字母就变成了C;同样地,第三次键入b时,灯E闪亮。

Enigma的加密

发送者将一个包含5个字母的德语单词nacht(夜晚)进行加密并发送。

第1步:设置Enigma

按照每日密码,设置Enigma,具体来说,就是在接线板上接线,并将3个转子进行排列。

第2步:加密通信密码

发送者想出3个字母,并将其加密。这3个字母称为通信密码。通信密码也是Enigma完成的。假设发送者选择通信密码为psv,那么就要在键盘上输入两次通信密码,也就是输入psvpsv这6个字母,输入完后,发送者可得到psvpsv的密文ATCDVT。

第3步:重新设置Enigma

通信密码中的3个字母实际代表了3个转子的初始位置。每个转子的上面都印有字母,根据字母来设置转子的初始位置。通信密码psv就表示需要将转子1、2、3分别转到p、s、v所对应的位置。

第4步:加密信息

键盘输入nacht5个字母,并记录下所对应的5个字母(KXNWP)。

第5步:拼接

发送者将ATCDVT和KXNWP进行拼接,拼接成ATCDVTKXNWP,然后通过无线电发送出去。

五 每日密码和通信密码

每日密码:每日密码是用来加密通信密码的。这种密钥被称为密钥加密密钥。

通信密码:通信密码来加密消息。

六 避免通信错误

两次输入通信密码psv,是为了避免通信错误,接收者解密后,如果通信密码不是3个字母重复两次这样的形式,就说明通信错误。

七 Enigma解密

第1步:分解

将收到的ATCDVTKXNWP分解为ATCDVT和KXNWP两部分。

第2步:设置Enigma

按照每日密码,设置Enigma,具体来说,就是在接线板上接线,并将3个转子进行排列。这一步和发送者操作相同。

第3步:解密通信密码

对ATCDVT进行解密,键盘输入对应字母,输出psvpsv,psv重复两次,接收者判断通信过程没有错误。

第4步:重新设置Enigma

根据通信密码psv,重新设置Enigma,这一步和发送者的第三步相同。

第5步:解密消息

对KXNWP进行解密,键盘输入KXNWP,输出明文natcht5个字母。

八 Enigma的弱点

1 Enigma可以在每次输入时,通过3个转子的旋转来改变电路。然而,在加密通信密码这一重要步骤,实际只有一个转子1会旋转,这是弱点之一。

2 将通信密码连续输入两次并加密也是一个弱点。

3 通信密码是人为选的的也是一个弱点。

4 必须派发国防军密码本也是一个弱点。

密码(图解密码技术)_第二章_Enigma密码机相关推荐

  1. 微型计算机控制数字量输入输出,[工学]WX_微型计算机控制技术_第二章5.ppt

    [工学]WX_微型计算机控制技术_第二章5 数字量输出驱动电路 三极管驱动电路 继电器驱动电路 晶闸管驱动电路 固态继电器驱动电路 达林顿驱动电路 微型计算机控制技术 第2章 输入/输出接口与过程通道 ...

  2. ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区

    原文:ArcGIS for Desktop入门教程_第二章_Desktop简介 - ArcGIS知乎-新一代ArcGIS问答社区 1 Desktop简介 1.1 ArcGIS for Desktop ...

  3. c语言运行时更入下一行,C语言高级语言程序设计(一)_第二章 C程序设计基础(二).ppt...

    C语言高级语言程序设计(一)_第二章 C程序设计基础(二) * 问a,b能否交换?不能.示例 传值调用 如何改变参数的值?在后续章节中介绍 下:传值 * 传值的好处 下:问题3.2 * * * 使用范 ...

  4. 《程序设计技术》第二章例程

    <程序设计技术>例程 <程序设计技术>第一章 C语言与程序设计(例程) <程序设计技术>第二章 C语言基础知识(例程) <程序设计技术>第三章 程序控制 ...

  5. 《计算机网络技术》第二章课后习题答案(全)

    <计算机网络技术>第二章课后习题答案(全) 1.消息和信息的各自概念是什么?两者之间有何关系? 答: 消息:人类能感知的描述. 信息:消息中所包含的有意义的内容. 关系:消息是信息的载体. ...

  6. CDISC的ADaMIG (V1.2) 中英文对照【2】_第二章 ADaM标准的基础

    本AdaMIG (v1.2)来自CDISC官网以下链接: https://www.cdisc.org/standards/foundational/adam/adam-implementation-g ...

  7. 微信小程序零基础入门_第二章 小程序框架_逻辑层

    第二章 小程序框架_逻辑层 2.1 逻辑层 小程序开发框架的逻辑层是基于JavaScript进行编写和实现的.在开发过程中写的所有代码,最终都被整合成一份JavaScript,在小程序启动的时候开始执 ...

  8. 云计算虚拟化技术与开发-------虚拟化技术应用第二章内容(CPU虚拟机X86要解决的问题、VT-x、VMX、vCPU、EPT、VT-d)

    目录 第二章:虚拟化实现技术架构 CPU虚拟机要解决的问题(x86处理器结构漏洞)及软硬件解决方案 intel VT-x的技术特点,VMX(非根操作)的操作模式及操作流程 vCPU的组成和基本操作 内 ...

  9. kelvin模型蠕变方程_第二章:黏弹性与波传播——2.4 力学模型和波传播

    Wave Fields in Real Media:Wave Propagation in Anisotropic,Anelastic,Porous and Electromagnetic Media ...

  10. Box2D翻译_第二章

    本文是对Box2D v2.1.2 manual中文翻译(现在网上流行的一个中文翻译是针对以前版本的,跟最新的2.1.2版有些不对应)的第二章.持续更新中...... 2. Hello Box2D 在B ...

最新文章

  1. jQuery父级以及同级元素查找
  2. 用开源项目cropper实现对图片中任意部分进行裁剪
  3. rust军用船指令_Rust基础学习笔记(五):Cargo与Crates.io
  4. jsDate对象和倒计时图片案例
  5. maven零基础从配置到运行helloworld(java maven helloworld)
  6. Angular CLI 全局 ng.cmd 文件内容分析
  7. [独库骑行之我们路过沙漠]塔克拉玛干的边缘
  8. 深入研究.NET 5的开放式遥测
  9. 【APICloud系列|6】使用APICloud接入客服系统美洽获取Appkey配置
  10. openssl 生成证书_CentOS7 httpd(Apache)SSL 证书部署
  11. python语言的基础知识_pythone语言基础知识汇总
  12. 国家制图标准适用于手工制图和计算机制图,机械制图国家标准与计算机绘图
  13. 超级玛丽制作揭秘8跟踪打印 类FILEREPORT
  14. 华硕afudos刷bios_华硕M2N-MX SE PLUS主板 如何用afudos命令刷BIOS
  15. Android多线程下载文件
  16. python爬取b站番剧链接,Scrapy爬虫爬取B站视频标题及链接
  17. vba批量合并指定的sheet_用VBA实现把多个Excel文件合并到一个Excel文件的多个工作表(Sheet)里...
  18. ubuntu更新时Not enough free disk space
  19. 华为手机设置 网页打不开java_如何设置华为手机浏览器,打开后不会自动跳转......
  20. Chrome 浏览器

热门文章

  1. 10.24 cv方向3DMM必备环境——Windows10/11下pytorch3d[完美安装版]
  2. AE 动效工作流技巧 —— 减少 Bodymovin 导出的 JSON 大小并提升性能(二)
  3. Python实战项目—金融量化分析(数据的简单预处理)
  4. GooFlow修改元素color(背景/字体/连线)
  5. python进阶之学习笔记_Python进阶学习笔记
  6. python进阶路线 知乎_Python自学路线图之Python进阶
  7. SVN项目提交错误,回退版本(svn项目回退指定版本)
  8. VS2015卸载经过
  9. linux 的vi命令详解,Linux vi 命令详解
  10. 附加:中半部分sql语句 区/县(数据表)