一个简单的模块,它为python项目添加了enigma机器模拟功能。
python-enigma的Python项目详细描述
python enigma:engima机器,但使用python
这个项目引入了一个名为python_enigma的包,它带有一个enigma
模块,可以导入该模块,并用于在python项目中包含类似enigma机器的加密。还包括一个简单的“hello world”概念证明、一个jason格式的转子基本目录(catalogue.json
),以及一个从csv准备目录的方便脚本。
安全通知
在千兆赫兹袖珍计算中,谜密码仅作为好奇点使用。作为专利的Enigma机器的原始安全缺陷都没有被纠正。
历史准确度通知
虽然已经尽力确保这个仿真器和实际的谜机的互操作性,但在使用特定部件或设置方面,或在操作员的“整理”功能方面,模块的任何内容都无法提高历史准确性。
利用
在脚本中使用enigma模块的主要方法是导入和调用engigma类。为了方便起见,您可以读取字符串“default”作为目录列表,以使用模块中包含的库存目录。
Enigma类在初始化时接受以下参数:
- 目录:转子绑定的字典,或使用模块中包含的库存绑定的字符串“default”。
- Stecker:一个空格分隔的绑定字符串,用于Steckerboard设置。例如,“AB CD”表示Stecker电缆设置在A和B、C和D之间。
- rotors:一个元组列表,显示目录中的rotor名称和所需的ringstellong字母设置,例如
[("III", "D"),]
。可以使用任何数量的转子,包括重复转子。 - 反射器:表示转子目录中转子名称的字符串,您希望用于反射器,例如“反射器B”。
- operator:如果为true,则将使用operator类。这将从消息中剥离不可打印的字符,并将消息切成5个字符的块。
- 字长:覆盖运算符使用的字长。
- 定子:接受“军用”或“民用”,以模拟军用版本设备的直接编码或民用模型中使用的QWERTZ编码。
Enigma类的使用提供了多种方便的方法:
- 设置轮子:接受一系列轮子位置(从左到右),并将其应用于消息设置。应该在每次解析调用之前调用。
- set_stecker:如果需要,可以在实例化整个机器后重写steckerboard设置。
- parse:解析提供的字符串并返回该消息,就好像它是通过实际的谜机处理的一样。