张春成

V2

2023/05/13阅读:13主题:默认主题

Enigma 的原理示意

Enigma 的原理示意

Enigma(译为恩尼格码)密码机是一种使用配对设备进行同步加密和解码的机械式密码机,本文是在前人代码的基础上,通过添加着色的方法使其原理更加便于理解。本文的开源代码可见我的 ObservableHQ 笔记本

Enigma machine demo[1]


  • Enigma 的原理示意[2]
    • 原理说明[3]
    • 示意图[4]

原理说明

由于 Enigma 机过于著名,因此在网络上可以方便地找到它的原理,本文主要参考 Brilliant 的介绍。

Enigma Machine | Brilliant Math & Science Wiki[5]

从机械的角度上讲,它是由一系列棘轮层层连接所组成的信号通路,每层棘轮都承载着一组 的对应关系。

Untitled
Untitled
Untitled
Untitled

以上图的三棘轮系统为例,它的三层分别有 种选择,另外每个棘轮有 种初始相位可供选择,对应 个字母,因此总的排列组合数量为

接下来的分析过于冗长,因此我把原文抄写如下

Since there are   letters in the alphabet, there are   ways to arrange the letters, but the plugboard can only make   pairs, so there are  letters involved with the pairings, and 66 leftover that must be divided out. Furthermore, there are   pairs of letters, and it does not matter what order the pairs are in, so divide also by  , and the order of the letters in the pair does not matter, so divide also by  . The resulting number of combinations yielded by the plugboard is as follows:

All of the components put together yields total number of ways to set a military-grade Enigma machine

示意图

接下来我在 ObservableHQ 上找到另一个挺好的例程,它用层次化的结构呈现几个棘轮的交互关系。我在其基础上,适当加入的着色功能,这样不同颜色的线条就能够更好地代表字母的输入与输出之间的对应关系。

Untitled
Untitled

Enigma machine demo[6]

Enigma machine[7]

参考资料

[1]

Enigma machine demo: https://observablehq.com/@listenzcc/enigma-machine-demo

[2]

Enigma 的原理示意: #enigma-的原理示意

[3]

原理说明: #原理说明

[4]

示意图: #示意图

[5]

Enigma Machine | Brilliant Math & Science Wiki: https://brilliant.org/wiki/enigma-machine/

[6]

Enigma machine demo: https://observablehq.com/@listenzcc/enigma-machine-demo

[7]

Enigma machine: https://observablehq.com/@tmcw/enigma-machine

分类:

后端

标签:

后端

作者介绍

张春成
V2