一个历史上精确的谜机模拟库。

py-enigma的Python项目详细描述


用python 3编写的一个历史精确的谜机库

Author:Brian Neal <bgneal@gmail.com>
Version:0.1
Date:June 5, 2012
Home Page:https://bitbucket.org/bgneal/enigma/
License:MIT License (see LICENSE.txt)
Documentation:http://py-enigma.readthedocs.org/
Support:https://bitbucket.org/bgneal/enigma/issues

概述

py enigma是一个python 3库,用于模拟使用的Enigma machines 在第二次世界大战期间由德国武装部队(国防军)执行。py谜成功了 可以对可以发送到或接收到的消息进行加密和解密 德国陆军(HEER)和空军使用的真正的谜机 (德国空军)和海军(克里格斯马林)。

我希望图书馆对迷迷、历史学家和 对密码学感兴趣的学生。

py enigma力求成为pythonic,易于使用,带有单元测试,并且 文档。

范围

py enigma的当前范围是模拟wehrmacht enigma机器。 其他谜团的模拟,如各种商业,铁路,外国, 如果足够的话,abwher(军事情报)模型可能会在晚些时候出现 兴趣和数据。

目前,py enigma可以模拟 德国陆军、海军和空军。

快速示例

此示例显示如何使用库来使用 德国军队采用的程序:

from enigma.machine import EnigmaMachine

# setup machine according to specs from a daily key sheet:

machine = EnigmaMachine.from_key_sheet(
       rotors='II IV V',
       reflector='B',
       ring_settings=[1, 20, 11],
       plugboard_settings='AV BS CG DL FU HZ IN KM OW RX')

# set machine initial starting position
machine.set_display('WXC')

# decrypt the message key
msg_key = machine.process_text('KCH')

# decrypt the cipher text with the unencrypted message key
machine.set_display(msg_key)

ciphertext = 'NIBLFMYMLLUFWCASCSSNVHAZ'
plaintext = machine.process_text(ciphertext)

print(plaintext)

此程序打印:

THEXRUSSIANSXAREXCOMINGX

py enigma还包括一个用于处理消息的命令行应用程序。 假设您有一个正确的密钥文件,其中包含与 上面的代码,上面的示例可以在命令行上执行:

$ pyenigma.py --key-file=keys.txt --start=WXC --text='KCH'
BLA
$ pyenigma.py --key-file=keys.txt --start=BLA --text='NIBLFMYMLLUFWCASCSSNVHAZ'
THEXRUSSIANSXAREXCOMINGX

密钥文件的格式可以在文档中找到。

要求

py enigma是用Python编写的,特别是python 3.2。没有别的了 需求或依赖关系。

安装

py enigma可以在Python Package Index(pypi)上找到。你可以安装它 使用pip

$ pip install py-enigma             # install
$ pip install --upgrade py-enigma   # upgrade

您还可以使用“get”下载最新代码的tarball或.zip文件 source“链接到Py-Enigma Bitbucket page。或者如果你使用 Mercurial,您可以使用以下命令克隆存储库:

$ hg clone https://bitbucket.org/bgneal/enigma

如果没有使用pip,可以使用以下命令进行安装:

$ python setup.py install

文档

最新的文档可在Read the Docs找到。在那里你可以browse the documentation online,或者 download it in a variety of formats

文档源也以Sphinx格式包含。如果你 安装sphinx您可以用几种输出格式生成文档。

支架

issue tracker处的Py-Enigma Bitbucket page处提供支持。 如果您有一般性的问题或意见,请随时给我发电子邮件(地址 在这个文件的顶部)。

拜托,如果你用py enigma做任何事,即使它只是学习, 请告诉我!

致谢和推荐信

如果没有全面详细的 关于德克·里米南特“不可思议的Cipher Machines and Cryptology website上的神秘机器的描述。尤其是,他的页面是信息的金矿。

德克还在visual basic中编写了一个Enigma simulator。尽管我没有 看看他的源代码,我确实用他的模拟器检查了 py谜。

我还想推荐托马斯·佩雷拉博士的照片和视频 Enigma Museum

另一个好的网站是格雷厄姆埃尔斯伯里的The Enigma and the Bombe

一个很好的视频,展示了谜的基本组成和操作 机器在youtube上:Nadia Baker & Enigma demo

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

推荐PyPI第三方库


热门话题
java Android测试运行失败:没有测试结果   java设置JMenuItems与Nimbus LaF的边界   java是使用springboot、Crudepository和MySQL检查重复值的好方法吗   谷歌电子表格的Java时代日期   java向xml文件添加EditText不起作用   java ORA00933:SQL命令未正确结束WHERE子句   如何在java中防止JTextField上使用CTRL+C?   java绑定到TypeLiteral在google guice中是好的还是坏的做法   java找到了原始类型,缺少泛型类的返回参数   Kafka Streams API中ArrayList Serde的java问题   java在hibernate中,哪种持久化上下文的性能更好?   java通过本机查询获取数据库url、名称和模式版本   如何为Java枚举编写通用for循环?   在Java应用程序中播放MP3   如何使用VisualVM度量短时间运行的Java应用程序的性能?   java从当前日期获取datetime(秒)   简单JMH基准中的javagrpcoome和NPE   java如何加载Maven项目库中Spring jar的应用程序上下文   JavaCC XPath解析器   用于Scala和Java的类型安全生成器库