恩尼格码密码机制作图解

电子说

1.3w人已加入

描述

这个作品是2013年无线电单片机竞赛的亚军。感谢所有支持这个作品的你们!

在对称加密学当中,恩尼格码机绝对是承前启后的存在。它将密码学研究从以前的语言文字学中心完全转移到了数学身上。在这里牵涉的密码并不是我们平时邮箱、银行帐号那种狭义概念,那种顶多叫做口令。这里说的密码就是通过某种转换规律方式,把一篇文章变得面目全非,非常人能阅读,以达到保密效果。这篇文章适于电脑控、军事控、历史控、数学控阅读,请做好烧脑准备。

第1步:

在对称加密学当中,恩尼格码机绝对是承前启后的存在。它将密码学研究从以前的语言文字学中心完全转移到了数学身上。在这里牵涉的密码并不是我们平时邮箱、银行帐号那种狭义概念,那种顶多叫做口令。这里说的密码就是通过某种转换规律方式,把一篇文章变得面目全非,非常人能阅读,以达到保密效果。这篇文章适于电脑控、军事控、历史控、数学控阅读,请做好烧脑准备。

这是我们的初号机。以下教程将手把手教你如何完美山寨史上著名的德国恩尼格玛密码机(以下称哑谜机,不清楚历史的可以到维基、百度等地方脑补一下)。这个基于Arduino的开源程序能够加解密任何哑谜机M4型(海军型)的信息。

这个第一台全功能开源完美哑谜机复制品是根据sketchsk3tch写的《Kid’s Game to Arduino Enigma Machine》(从儿童玩具到Arduino恩尼格玛机)所作。

采用多路复用LED电路,仅用38个针脚的115个发光二极管和4个针脚的36个按键所连接的整个电路,全靠在键盘回路里准确放置的电阻以及P型号晶体管得以实现。要不然,4个16段显示器,以及每个按键上的LED将大幅增加所需针脚总量,即使用了Arduino Mega板但如果没用上述两个方法也不能如此简洁。 面对电路的超额需求,我们在http://www.stgeotronics.com设计了专用的PCB板。直接跳到第10步和以后的步骤可以找到更多信息。同时,我们以测试过的完整电子组装套装发布。

第2步:

面包板上的论证

第3步:

在开始制作电子哑谜机之前,我们先要确保能驱动16段LED显示。如果能的话,我们就能做接下来的所有步骤,除了数学上的问题,一切都是浮云。

第4步:

万事具备

第5步:

布置零件

第6步:

第7步:

第8步:

第9步:

6*8寸无线电面包版是最合适放置所有元件的,既不多余也不拥挤,而且和哑谜机盒子内部完美吻合。

最初我们将面包等分三块区域,但很快意识到如此一来,电子版哑谜机将比原版机械哑谜机长。于是我们将所有零件缩放到正好够占用的空间。

每个元件位置就绪,下一步就是焊接。

第10步:

第11步:

我焊,我焊,我焊焊焊……

第12步:

第13步:

第14步:

第15步:

第16步:

好吧,在单一作品身上,我从没焊接如此多次。16段显示的18个针脚,还有26个字母键乘以每个4个脚,外加26个键盘灯,一些其他LED,一个三掷开关,真乃“成吉思焊”。

当初我们的决定是使这些16段LED显示看起来像老式电子管的感觉,增加了不少焊点,“巨焊”!

Arduino Mega板上针脚的分配: 17段:

第17步:

第18步:

第19步:

在原版M4型木盒内得到确定位置数据后,我们买了一块胶合板,将它切块,然后砌盒子。

我们从旧服务器机架上卸了一块钢板,厚度正合需要。将模具(上面早已画好每个按键和灯位,并切好了洞洞)盖在钢板上,然后用记号笔画出需要切出的洞洞。

接着,我们用喷漆把它涂黑,就像真的哑谜机那样。

第20步:

组装测试

第21步:

第22步:

第23步:

第24步:

第25步:

第26步:

首先把金属板在面包版上永久固定,确保所有按键正常工作,所有LED都能发光。

接着就是把这一大坨东东装入木盒,确保没有空隙位置。

第27步:

第28步:

在组装硬件过程中,我们也写了个小型Arduino程序框架,用以测试特定几个需要关注的部分:

用来测试每个按键信号能准确读取,还有测试10个功能按键的代码。

Enigma_POST(上电自检)确保在每种模式下所有键盘等都能准确亮起,在每种模式下每个LED信号都能传送。我们对原本面包板上的代码做了修正,确保4个16段LED显示的每个部件无懈可击。

但,即使所有手上的程序片段都说明机器状态完好,重现M4海军型哑谜机加解密功能,数学方面居功至伟。

所有Arduino程序片段在我们刚刚建好的云端都能找到。

以下是Enigma_POST程序片段(上电自检):

Arduino

第29步:

第30步:

第31步:

第32步:

第33步:

第34步:

第35步:

第36步:

第37步:

首先,我们写了个函数,给每个哑谜机工作模式用。

在模式0、默认模式,哑谜机仅仅是一台普通打字机,以跑马灯方式显示它的型号。

模式1下,允许用户从八个转子中选取三个,两个反射器中选择一个进行使用。

模式2下,允许用户排列转子次序。

模式3用于自定义转子初始字母排列。

选择模式4,用户最多可以使用接线板上10对交换字母排列。

模式5是运行模式,此时哑谜机能加解密任何从键盘录入的信息。

如果有足够利润,我们将研发印刷电路板,装载更容易组装的全功能哑谜机复制品。

第38步:

电路图

第39步:

徇众要求,电路图两份在此。

第一个是仿电子管(4个16段显示单元)如何布线,用于显示转子在哑谜机上的输出信号。同时,它们也用于每种调试模式,反馈用户机器设定信息。

第二幅电路图显示26个字母按键及10个功能键、26个键盘灯和5个LED是如何布线的。

所有LED电阻都是470欧,而开关电阻则都是1千欧。 印刷电路设计档仍在修正中。 希望您享受我们第一份制作教程,感谢您抽出宝贵时间阅读!

第40步:

PCB样机版

第41步:

徇众要求,我们设计及定制了一些印刷电路板。

它们终于面世了,如此清纯可爱!我们忙于组装,并测试其中一块样品,确保它在功能上与外观一样完美无暇。更重要的是,能和那台原型测试机一样的功能。 订购回来的底板几乎完美,只需一点引脚线去修补设计瑕疵。而这些瑕疵对功能没有影响,修理它们是小菜一碟。 有了这些引脚,你能更容易制作自己的哑谜复刻机,比起教程里的布线方便多了。我们在此很高兴宣布,测试完成,新型板一样给力!

第42步:

组装完成的作品

第43步:

第44步:

第45步:

第46步:

第47步:

花了一晚上组装完成

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分