Enigma密码机是二战德军使用的密码机,是密码系统中出色的设计。

构件:

  • 5个rotor(转子/齿轮):编号I、II、III、IV、V,每次选其中3个使用。每个rotor上均存在着26个字母到自身的一一映射表,且各不相同。
  • Plugboard(接线板):内含26个接线柱,表示26个字母。将某两个字母连起即可实现这两个字母的相互转化(即按A出B,按B出A);
  • reflector(反射板):将26字母两两配对,实现配对的两个字母的相互转化。

加密过程:

加密过程要经过5个元件:(以明文A为例,假设Δ=0)

开始时输入A

  1. plugboard(假定接线板设置为:A-B,C-D)
    char plug[27] =
    BADCEFGHIJKLMNOPQRSTUVWXYZ”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 A -> B

  2. rotor I
    char rotor[27] =
    “EKMFLGDQVZNTOWYHXUSPAIBRCJ”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 B -> K

  3. rotor II
    char rotor[27] =
    “AJDKSIRUXBLHWTMCQGZNPYFVOE”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 K -> L

  4. rotor III
    char rotor[27] =
    “BDFHJLCPRTXVZNYEIWGAKMUSQO”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 L -> V

  5. reflector
    char reflector[27]=
    “YRUHQSLDPXNGOKMIEBFZCWVJAT";
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 V -> W

经过上述5步,A转成W,按逆向路径经过3个齿轮时要反查表,把W进一步转化成密文:

  1. rotor III
    char rotor[27]=
    “BDFHJLCPRTXVZNYEIWGAKMUSQO”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 W -> R

  2. rotor II
    char rotor[27]=
    “AJDKSIRUXBLHWTMCQGZNPYFVOE”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 R -> G

  3. rotor I
    char rotor[27]=
    “EKMFLGDQVZNTOWYHXUSPAIBRCJ”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 G -> F

  4. plugboard
    char plug[27]=
    “BADCEFGHIJKLMNOPQRSTUVWXYZ”;
    /ABCDEFGHIJKLMNOPQRSTUVWXYZ/
    即 F -> F

(plugboard和reflector映射表查表可以正向查,也可以反向查,结果一样)

经过上述 4+1+4 = 9 步,A转成W再转成F,F就是A的密文。
可以尝试把F当作明文重新9步走一遍,最后出来的一定是A。即明文到密文和密文到明文是完全对称的。

实际

实际的Enigma密码机/Enigma模拟器中,应注意:

  1. 在9步中,数据是从图中“右到左再左到右”传递的,因此去时第一个碰到的rotor在右,第三个碰到的rotor在左;回时第一个碰到的rotor在左,第三个碰到的rotor在右。
  2. Enigma是先转动rotor再进行映射,即 Δ 值的计算应该用转动之后的KeyMessage值计算。

上例的9步过程中,假设3个rotor的ring setting设为AAA,则如果需要让Δ =0 ,应该将MessageKey设成01 01 26即AAZ,再敲键。(这样,当敲键时,MessageKey将先变为AAA,并得到Δ = 0,就有了如上的9步过程)
因此可以看出,发完第一个字母A之后,再发的第二个字母的Δ值一定与第一个不同,依次类推每一个字母的Δ均不同,由此实现了不同位置的相同字母的密文字母不同(多表密码)(直至发到第26^3个字母,规律重新开始)

1、剩余两个rotor的映射表如下:
IV rotor:
ESOVPZJAYQUIRHXLNFTGKDCMWB
ABCDEFGHIJKLMNOPQRSTUVWXYZ
V rotor:
VZBRGITYUPSDNHLXAWMJQOFECK
ABCDEFGHIJKLMNOPQRSTUVWXYZ

2、5个rotor的使下一个rotor发生跳转的字母未必是Z,即未必是“满Z进一”
当 rotor I、II、III、IV、V 为Q、E、V、J、Z时,若再键入字符,则下一个rotor会转动一格。(当然,这个rotor也会转动一格,分别变为R、F、W、K、A)(5个rotor的QEVJZ称为“使进位字母”,又敲键能使下一个rotor转动)

3、Double stepping
由Enigma的机械结构决定,中间的rotor有两种情况会转动:
(1) 右边的rotor在自身的“使进位字母”,又敲键,右边的使中间的转动
(2) 中间的rotor在自身的“使进位字母”,又敲键,中间的反常转动(不论右边在什么位置)(反常机制,只有中间的rotor具有)

假定III=1=A, II=4=D, I=17=Q
现在I旋转,从Q变成R,一定会带动II旋转: III=1=A, II=5=E, I=18=R
此时再旋转I的话,I本来是不应该带动II转的(因为当前I不在Q这个位置),但是II还会立即再转。
(同时II正常带动III旋转: III=2=B, II=6=F, I=19=S)

4、Ring Setting
Ring setting是rotor内部的状态,在rotor转动时不会变化
MessageKey是rotor外部的状态(最外侧露出的值),会随每一次按键而变化
事实上在一个值,在传入rotor但进行映射之前,以及,在映射结束但传出rotor之前,需要分别加、减一个Δ值。其中Δ=MessageKey-RingSetting.

设I号齿轮的 RingSetting = B, MessageKey = D, 则 Δ = MessageKey - RingSetting = ‘D’ - ‘B’ = 2.
假定输入A,则A进入I号齿轮时,需要先加上Δ变成 A + 2 = C, 再映射C -> M,M - 2 = K。因此I号齿轮输出K.

非常值得说明的是,例如刚才的9步过程

5、初始状态的互通
通信双方的必须在同样的初始MessageKey下,才能完成如上对称加密、解密操作。那么初始状态如何保证相同?
发送方随机想出3个齿轮的外部状态(MessageKey)为: ABC,以明文的形式把ABC发送给对方。
再拿出今天要用到密钥即真正用来加密的齿轮初始状态为:ZJU
在当前齿轮初始状态为ABC的情况下,连续按下ZJU得到ZJU的密文Z’ J’ U’ 并发送给对方。
对方在齿轮初始状态为ABC的情况下,输入Z’ J’ U’ 可以解出ZJU

接下去双方都把齿轮的初始状态设为ZJU,然后就可以开始正式通讯。

Crypto-Enigma密码机原理相关推荐

  1. Enigma密码机原理介绍

    注:本文修改自三思科学<ENIGMA的兴亡> ENIGMA ENIGMA看起来是一个装满了复杂而精致的元件的盒子.不过要是我们把它打开来,就可以看到它可以被分解成相当简单的几部分.下面的图 ...

  2. Enigma密码机初级解析

    原文地址:http://blog.sina.com.cn/s/blog_6f06b8b101016s9r.html 写在前面     在又一次读完1001n兄的<密码传奇>之后,我决定写些 ...

  3. 【历史上的今天】7 月 15 日:Mozilla 基金会正式成立;Enigma 密码机的首次工作;任天堂推出 FC 游戏机

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 7 月 15 日,在 2006 年的今天,Twttr(现在被称为 Twitter)正式推出:在 3 ...

  4. 【历史上的今天】2 月 23 日:Enigma 密码机申请专利;戴尔电脑创始人出生;Mellanox 收购 EZchip

    整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2023 年 2 月 23 日,在 2006 年的今天,都灵冬奥会自由式滑雪男子空中技巧决赛在意大利都灵萨奥兹·杜 ...

  5. ENIGMA密码机程序

    ENIGMA是一种复式替换序列密码体系,所谓序列密码,是指加密不分组,加密后的信息与加密前是等长的,简化了对通信buf的处理.它的强度并非很高.在商业通信中,完全不加密是危险的,过于复杂的加密也没必要 ...

  6. 2021年“羊城杯”网络安全大赛部分Writeup

    文章目录 MISC 签到 赛博德国人 MISC520 Baby_Forenisc Crypto Bigrsa Ring Ring Ring MISC 签到 题目描述:猜数字01-30,数字序列以San ...

  7. 密码学的一些常识01

    序 作为一个小白,对称加密,非对称加密,数字签名,数字证书,CA,diff-helman,DES,AED,RSA--这些都不会.所以,百度启动,先初步了解. 实际应用 我是个小白--0基础的,所以,搞 ...

  8. Enigma Sim-英格玛密码机模拟器

    Enigma Sim是一款Enigma(英格玛)密码机模拟软件,能够对信息进行多表代换加密.该模拟器高度还原了二战时期德国所使用的三种型号Enigma的功能和细节,转子和反射器所对应的字母代换表都参考 ...

  9. 二战时图灵机破译的Enigma密码,现在AI仅需13分钟便可破译

    点击有惊喜 第二次世界大战期间,布莱切利园是英国破译密码的中心.图灵当时也在那里工作.密码破译者的天才工作挽救了许多平民和士兵的生命,据说将战争缩短了两年. Enigma密码机非常复杂,它最先进的化身 ...

  10. 密码分析学-Enigma机破解

    密码分析学 Enigma机破解 目录 作业要求 摘要 正文 一:Enigma机加密 1.1 背景 1.2 加密原理 1.3 安全性分析 1.4 加密算法实现 二:Enigma解密 2.1 历史上的解密 ...

最新文章

  1. 【SURF+GTM】基于SURF特征提取,GTM去除错误配准点的图像匹配算法的MATLAB仿真
  2. Centos7.x下Nginx安装及SSL配置与常用命令
  3. c语言和其他高级语言一样也要经过编译,C语言和其他高级语言的最大的区别是什么?...
  4. neo4j 修改密码
  5. java tbase_使用Java从firebase获取数据
  6. 第五章:配置使用FastJson返回Json视图
  7. 程序编程代码大全_CNC加工中心程序代码大全
  8. 494. 目标和(JavaScript)
  9. 根据时间戳生成编号_VLOOKUP函数制作产品报价单,能自动生成价格
  10. 中关村在线 测试软件,主观测试软件:ZOL Monitor LCD 简介
  11. 最棒的 JavaScript 学习指南
  12. swift 指定区域截图,自定义不规则图形截图
  13. 计算机快捷键英语,输入法电脑中英文切换快捷键
  14. 戴尔服务器怎么u盘安装win7系统教程,戴尔电脑怎么用u盘装win7系统教程
  15. 举个栗子~ Minitab 技巧(1):快速安装和激活 Minitab 统计软件
  16. 超级App,风口浪尖的新机遇
  17. 群接龙小程序定制开发
  18. H2/H∞半车悬架控制仿真分析
  19. substance designer制作眼球法线
  20. WordPress 搭建个人博客全攻略

热门文章

  1. postman Could not send request
  2. 你对Redis的使用靠谱吗?Redis的性能高,吗?Redis可以保证原子性,吗?用Redis可以实现事务,吗?用Redis可以当队列,吗?Redis适合用来做什么?
  3. Craps小游戏简单代码实现
  4. syn 攻击脚本 python_python制作SYN泛洪攻击工具
  5. OpenCV-证件照蓝底换成白底(或其他颜色如红色)
  6. JSON 解析嵌套json字符串,一个json字符串中嵌套另一个json字符串 (附解析代码)
  7. 国学传承美德,走进一德大脑屋国学启蒙课
  8. python人民币转大写_Python人民币大写转换代码
  9. 交换机下接路由器lan还是wan_小白请教,自家网络搭建中,光猫、交换机、无线路由器、NAS布线问题...
  10. PHP实现微信公众平台开发---提升篇(access_token存session)