一个谜机模拟包。

crypto-enigma的Python项目详细描述


Python Programming LanguagePyPiDevelopment StatusBSD3 LicensePyPi Build Status

为Python2.7提供了一个带有状态和编码显示的谜机模拟器。

目前大多数情况下只支持那些machine models 在战争年代普遍使用的有IM3、和M4

功能:包api

该包提供生成计算机配置的功能 从传统的规范,检查配置的状态,模拟 通过在状态之间进行步进来操作机器,和 编码消息:

创建计算机配置(请参阅documentation中的config_enigma_from_string):

>>> from crypto_enigma import *
>>> cfg = EnigmaConfig.config_enigma_from_string(u'B-I-III-I EMO UX.MO.AY 13.04.11')

编码消息(请参见documentation中的enigma_encoding):

>>> cfg.enigma_encoding(u'TESTINGXTESTINGUD')
u'OZQKPFLPYZRPYTFVU'

>>> cfg.enigma_encoding(u'OZQKPFLPYZRPYTFVU')
u'TESTINGXTESTINGUD'

显示配置详细信息(有关config_string,请参见documentation):

>>> print(cfg.config_string(letter=u'X', format='internal', mark_func=lambda c: '(' + c + ')'))
X > ABCDEFGHIJKLMNOPQRSTUVW(X)YZ
  P YBCDEFGHIJKLONMPQRSTXVW(U)AZ         UX.MO.AY
  1 HCZMRVJPKSUDTQOLWEXN(Y)FAGIB  O  05  I
  2 KOMQEPVZNXRBDLJHFSUWYACT(G)I  M  10  III
  3 AXIQJZ(K)RMSUNTOLYDHVBWEGPFC  E  19  I
  R YRUHQSLDPX(N)GOKMIEBFZCWVJAT         B
  3 ATZQVYWRCEGOI(L)NXDHJMKSUBPF         I
  2 VLWMEQYPZOA(N)CIBFDKRXSGTJUH         III
  1 WZBLRVXAYGIPD(T)OHNEJMKFQSUC         I
  P YBCDEFGHIJKLONMPQRS(T)XVWUAZ         UX.MO.AY
T < CNAUJVQSLEMIKBZRGPHXDFY(T)WO

模拟机器操作(有关print_operation,请参见documentation):

>>> cfg.print_operation(message=u'TESTING', show_step=True, mark_func=lambda c: '(' + c + ')')
0000       CNAUJVQSLEMIKBZRGPHXDFYTWO   EMO  19 10 05
0001  T > UNXKGVERLYDIQBTWMHZ(O)AFPCJS  EMP  19 10 06
0002  E > QTYJ(Z)XUPKDIMLSWHAVNBGROFCE  EMQ  19 10 07
0003  S > DMXAPTRWKYINBLUESG(Q)FOZHCJV  ENR  19 11 08
0004  T > IUSMHRPEAQTVDYWGJFC(K)BLOZNX  ENS  19 11 09
0005  I > WMVXQRLS(P)YOGBTKIEFHNZCADJU  ENT  19 11 10
0006  N > WKIQXNRSCVBOY(F)LUDGHZPJAEMT  ENU  19 11 11
0007  G > RVPTWS(L)KYXHGNMQCOAFDZBEJIU  ENV  19 11 12

观察机器运行500步:

>>> cfg.print_operation(steps=500, show_step=True, format='internal', overwrite=True)

功能:命令行

命令行脚本enigma.py提供了api的几乎所有功能。

编码消息:

$ enigma.py encode "B-I-III-I EMO UX.MO.AY 13.04.11" "TESTINGXTESTINGUD"
OZQKPFLPYZRPYTFVU

$ enigma.py encode "B-I-III-I EMO UX.MO.AY 13.04.11" "OZQKPFLPYZRPYTFVU"
TESTINGXTESTINGUD

显示配置详细信息(在命令行帮助中详细说明):

$ enigma.py show "B-I-III-I EMO UX.MO.AY 13.04.11" -l 'X' -H'()' -f internal
X > ABCDEFGHIJKLMNOPQRSTUVW(X)YZ
  P YBCDEFGHIJKLONMPQRSTXVW(U)AZ         UX.MO.AY
  1 HCZMRVJPKSUDTQOLWEXN(Y)FAGIB  O  05  I
  2 KOMQEPVZNXRBDLJHFSUWYACT(G)I  M  10  III
  3 AXIQJZ(K)RMSUNTOLYDHVBWEGPFC  E  19  I
  R YRUHQSLDPX(N)GOKMIEBFZCWVJAT         B
  3 ATZQVYWRCEGOI(L)NXDHJMKSUBPF         I
  2 VLWMEQYPZOA(N)CIBFDKRXSGTJUH         III
  1 WZBLRVXAYGIPD(T)OHNEJMKFQSUC         I
  P YBCDEFGHIJKLONMPQRS(T)XVWUAZ         UX.MO.AY
T < CNAUJVQSLEMIKBZRGPHXDFY(T)WO

模拟机器操作(在更详细的命令行帮助中解释):

$ enigma.py run "B-I-III-I EMO UX.MO.AY 13.04.11" -m "TESTING" -t -H'()'
0000       CNAUJVQSLEMIKBZRGPHXDFYTWO   EMO  19 10 05
0001  T > UNXKGVERLYDIQBTWMHZ(O)AFPCJS  EMP  19 10 06
0002  E > QTYJ(Z)XUPKDIMLSWHAVNBGROFCE  EMQ  19 10 07
0003  S > DMXAPTRWKYINBLUESG(Q)FOZHCJV  ENR  19 11 08
0004  T > IUSMHRPEAQTVDYWGJFC(K)BLOZNX  ENS  19 11 09
0005  I > WMVXQRLS(P)YOGBTKIEFHNZCADJU  ENT  19 11 10
0006  N > WKIQXNRSCVBOY(F)LUDGHZPJAEMT  ENU  19 11 11
0007  G > RVPTWS(L)KYXHGNMQCOAFDZBEJIU  ENV  19 11 12

观察机器运行500步:

$ enigma.py run  "c-β-VIII-VII-VI QMLI 'UX.MO.AY 01.13.04.11" -s 500 -t -f internal -o

文档

Documentation Status

完整的文档可在Read the Docs获得。

命令行文档可从命令行脚本获得帮助:

$ enigma.py --help

限制

请注意,用于表示 组件(薄的海军旋翼)支持Unicode,而一些 机器状态显示的几个方面取决于对组合的支持 Unicode编码。这是一个known limitation那个 将在以后的版本中解决。

还要注意,在使用此软件包的任何脚本的开头,您都应该

from __future__ import unicode_literals

在使用api的任何代码之前,或者使用

确认ipython(in ipython_config.py
c.InteractiveShellApp.exec_lines += ["from __future__ import unicode_literals"]

或者显式地支持unicode字符串(例如,在上面的例子中使用u'TESTING')。

备选方案

对于其他python enigma机器,请参见:

这个包基于一个Haskell version,具有基本相同的api。

开发状态

Development Build StatusDocumentation Status

这个包还处于开发的早期阶段,我不能保证 development version会起作用的。有关计划发布和活动的更多详细信息 可以在调度的列表milestonesopen issues中找到。 各种test versions可以用于安装或问题检查,但这些 可能无法按预期工作。

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

推荐PyPI第三方库


热门话题
java用变化的替换字符串替换子字符串   从数据库中断中恢复的oracle Java DAL?   Android/Java页边距位于左/右/底部   java如何用相同的源代码构建不同的APK?(我发现了一个错误)   java正则表达式,仅当字符串以一行中的3个数字开头时才匹配第一个数字   使用以xml为输入的给定端点调用java中的rest-ful web服务?   java长字符串转换为UTF8引发异常   java如何使用截取方法获取ArrayList   java将计算列添加到可观察列表中   正则表达式如何在java正则表达式中使用组?   java正则表达式只接受字母表和空格,不允许在字符串的开头和结尾使用空格   java简单onclick按钮在安卓中不起作用   java如何在Spring中只实现Crudepository的特定方法?   java无法使用json对象NPE读取jsonarray   java我可以添加maven依赖项,这些依赖项被打包为除此之外的任何东西。罐子