相信各位看了《模仿游戏》之后,都会对这个二战的加密方法感到很好奇吧,我也不例外,因此编了个程序实现了恩格玛加密机,这机器最大的特点就是有着自反性,只要初始设置一致的时候,那么它就是自反的,比如输入A,加密后B,在一样的设置下,输入B一定会输出A。
详细的介绍可以看这里:
http://www.zhihu.com/question/28397034

下面我实现的是简化版的,没有插线板(如果加上去也是很简单的,只需要替换指定的字母就可以了,这里为了简洁就不添加了)

#include <string>
#include <iostream>
using namespace std;string Enigma(string input){int code;int n[6] = {24,2,5,4,10,23};  //定义6个转子int nsize=6;string output;for (int i = 0; i < input.size();i++){if(input[i]==' '){output+=' ';continue;}code = input[i]-'a';for (int j = 0; j < nsize;j++){code = (code + n[j]) % 26;}if(code%2==0)   code++;else code--;  //反射器如果偶数+1,奇数-1,反射器只要能实现字母两两配对就可以了。for (int j = nsize-1; j >=0;j--){code = code - n[j];if(code<0)code=26+code;}n[0]++;for (int j = 0; j < nsize-1; j++){if (n[j]>=26){n[j + 1]++;n[j] = 0;}}n[nsize-1] = n[nsize-1] % 26;output += code+'a';}return output;}int main()
{
string text="hey hey  helloworld";
string miwen=Enigma(text);
cout <<"密文:"<< miwen<< endl;
cout <<"明文:"<< Enigma(miwen) << endl;
return 0;
}

编程实现恩格玛加密机(C++)相关推荐

  1. python编程挑战——使用python实现恩格玛机(1)

    想起一个好玩的事情,使用python来实现德军在二战时加密的设备--恩格玛机. 那么什么是恩格玛机,他是怎么工作的?这篇文章提供了很详细的说明: https://www.zhihu.com/quest ...

  2. 单表恩格玛机的源码实现

    最近看了一部电影,叫<模仿游戏>,主要讲的就是二战期间图灵破解德军通讯密码的故事,最后的意义是导致二战提前两年结束,拯救了至少1400万人的生命.然后自己一时兴起就写了一个单表随机排列的恩 ...

  3. 恩格尔注塑机数据采集

    本文章适用于使用CC300控制器,采用欧规63(Euromap63)的恩格尔注塑机. 一,开通授权 需要和德国工程师邮件联系,google翻译一下即可.PS:有问题需解决也是通过邮件联系,响应速度一般 ...

  4. 1968年12月9日,恩格尔巴特公开演示了世界上第一个鼠标盒子

    鼠标之父"道格拉斯·恩格尔巴特 腾讯科技讯,肖华2013年12月19日编译 计算机的几次革命和大规模普及都是始于人机交互的改变,今年7月2日,"鼠标之父"道格拉斯·恩格尔 ...

  5. 培养你的“翁格玛丽”

    一家外贸公司的一位下属季度的销售结果大大超出了老板的期望值. 老板激动得不知如何是好,当即从办公桌上拿起一只香蕉塞到下属手里:"请原谅我眼下只有这个东西,我只是想让你知道,我对你做的这件事情 ...

  6. Python实现恩尼格玛加密算法——附完整源码

    Python实现恩尼格玛加密算法--附完整源码 恩尼格玛是第二次世界大战中德国所使用的复杂电机械式密码机.它被认为是世界上最复杂的加密设备之一.在这个项目中,我们将使用Python模拟实现恩尼格玛加密 ...

  7. 鼠标之父:恩格尔巴特于2013年7月3日去世

    北京时间7月4日消息,据国外媒体报道,发明了计算机鼠标的硅谷工程师道格拉斯·恩格尔巴特(DouglasEngelbart),昨天在加州阿塞顿家中去世,享年88岁. 道格拉斯·恩格尔巴特被誉为" ...

  8. 恩格尔系数越大,说明一个家庭越富裕

    1.以下有关经济指标的说法正确的是: A.恩格尔系数越大,说明一个家庭越富裕 B.CPI指数越大,表明居民的就业率越高 C.货币供应量越大,说明居民的消费水平越高 D.基尼系数的数值越接近0,表明收入 ...

  9. 1978-2019年中国各省份城镇与农村恩格尔系数

    中国各省份城镇与农村恩格尔系数(1978-2019) 1.时间:1978-2019年 2.范围:31省 3.指标: 城镇恩格尔系数.农村恩格尔系数 恩格尔系数=食品支出/总支出 4.来源:统计NJ.农 ...

  10. matlab 恩格尔系数模型,基于AR模型的贵州省农村居民恩格尔系数分析

    智者论道智库时代 ·220· 基于 AR 模型的贵州省农村居民恩格尔系数分析 范贤广 (贵州工程应用技术学院,贵州毕节 551700) 摘要:文章收集了 1978 年 -2017 年贵州省农村 h 居 ...

最新文章

  1. 光有面罩不是能防护的
  2. 使用Ant实现打包jar包上传到服务器
  3. java宏定义_现代化的 Java (二十六)—— Akka Stream Graph
  4. 腾讯、百度、小米等7家互联网各大厂的中台建设怎么样了?
  5. 靶场练习第十天~vulnhub靶场之dc-2
  6. 数据结构 - 递归 回溯算法(八皇后问题)
  7. Excel表格模板:记帐汇总凭证表下载
  8. python 基础 5 while循环语句
  9. 高数测试——3.29
  10. JavaSE——Java8之函数式接口、函数式编程、Lambda表达式
  11. 漫画:图的最短路径问题
  12. [全网最新最全]2020年国内和国外安卓应用上线上架应用市场渠道集合(关键词:apk,发布,Google Play,Android,详细步骤介绍流程)
  13. 解决阿里云ECS服务器下载 git 资源慢的问题
  14. android开发之高仿中国建设银行App
  15. 【开发教程14】AI语音人脸识别(会议记录仪/人脸打卡机)-AI人脸系统架构
  16. 前端javascript常见问题总结
  17. vue : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本
  18. Python 棋子移动游戏
  19. 计算机义诊策划书模板,大学生义诊活动策划书
  20. python新技术_2020年令人期待的Python新功能

热门文章

  1. 局域网常见攻击方式原理
  2. 计算机系统如何禁止删除文件,如何彻底删除文件防止恢复【详细介绍】
  3. matlab coder分析
  4. excel 的条件格式(一)
  5. html文字闪烁特效代码,HTML最简单的文字闪烁代码
  6. 一次spinlock死锁故障的定位(太经典,收藏!)
  7. 完全卸载chrome
  8. 多x多y的origin图_素雅、便携、多场景,松下纳诺怡X黑科技除菌净味产品使用简评...
  9. c语言输出字母空心菱形,C语言实现打印菱形和空心菱形
  10. 鸭子应用--策略模式