一个简单的模块,它为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:解析提供的字符串并返回该消息,就好像它是通过实际的谜机处理的一样。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从Android本地存储获取媒体文件(图像、视频、音频)?   toarray Java对象数组项到字符串数组   java读取逗号分隔的配置文件的最佳方式是什么?   多线程当需要多次设置和取消时,如何在Java中使用计时器?   java Tomcat:启动。蝙蝠不见了   java通过将子路径映射到不同的控制器来拆分Spring控制器   java如何使用加密算法创建自己的安全提供者?   java如何在给定执行时间的情况下,在每个固定的时间段调用该方法   java使用Tomcat运行Servlet   java Apache poi项目符号和编号   java如何在没有毫秒的情况下打印DateTime   java在springdatajpa中按一个字段过滤而不键入query时,如何为另一个字段编写两个条件?   java为什么@Transactional在另一个提交失败时不回滚一个提交?   java为什么浏览器会将大写字母转换为小写字母?   Ajax请求的javascript问题(Liferay)   java如何在选择其他jList时更新jList   JavaSpring,XMLCOnfiguration:不在xml文件中指明注释是如何工作的?   java,包括web中的文件。xml