一个简单的模块,它为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无法调用扩展超级非抽象类的抽象类方法   java Hibernate 5关联[]引用了一个未映射的实体[]:origin(User.hbm.xml)   java禁用JSpinner中的数字分组   java Spring的环境抽象是否使用PropertyEditor?   java是否创建自定义注释作为FrameworkAnnotation的别名?   java如何将Selenium安装为Unix守护程序?   java三值if运算符在正则if-one中   有人能帮我在一个程序上分析java代码吗?   java Spring集成5.0反应堆类型支持   java Websphere 7线程转储分析   java Akka期货和监管策略如何应对失败   使用Clojure中的可选参数调用java函数的构造函数   java如何消除安卓按钮的延迟?   Android上使用X.509证书的java认证应用程序   java如何获取列表中特定类型的所有对象?   java如何将json数组字符串转换为json对象   安卓 Java从长时间返回的日期不正确   java Android Studio在尝试从TextEdit搜索单词时崩溃   ViewPager的java子项