编程实现恩格玛加密机(C++)
相信各位看了《模仿游戏》之后,都会对这个二战的加密方法感到很好奇吧,我也不例外,因此编了个程序实现了恩格玛加密机,这机器最大的特点就是有着自反性,只要初始设置一致的时候,那么它就是自反的,比如输入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++)相关推荐
- python编程挑战——使用python实现恩格玛机(1)
想起一个好玩的事情,使用python来实现德军在二战时加密的设备--恩格玛机. 那么什么是恩格玛机,他是怎么工作的?这篇文章提供了很详细的说明: https://www.zhihu.com/quest ...
- 单表恩格玛机的源码实现
最近看了一部电影,叫<模仿游戏>,主要讲的就是二战期间图灵破解德军通讯密码的故事,最后的意义是导致二战提前两年结束,拯救了至少1400万人的生命.然后自己一时兴起就写了一个单表随机排列的恩 ...
- 恩格尔注塑机数据采集
本文章适用于使用CC300控制器,采用欧规63(Euromap63)的恩格尔注塑机. 一,开通授权 需要和德国工程师邮件联系,google翻译一下即可.PS:有问题需解决也是通过邮件联系,响应速度一般 ...
- 1968年12月9日,恩格尔巴特公开演示了世界上第一个鼠标盒子
鼠标之父"道格拉斯·恩格尔巴特 腾讯科技讯,肖华2013年12月19日编译 计算机的几次革命和大规模普及都是始于人机交互的改变,今年7月2日,"鼠标之父"道格拉斯·恩格尔 ...
- 培养你的“翁格玛丽”
一家外贸公司的一位下属季度的销售结果大大超出了老板的期望值. 老板激动得不知如何是好,当即从办公桌上拿起一只香蕉塞到下属手里:"请原谅我眼下只有这个东西,我只是想让你知道,我对你做的这件事情 ...
- Python实现恩尼格玛加密算法——附完整源码
Python实现恩尼格玛加密算法--附完整源码 恩尼格玛是第二次世界大战中德国所使用的复杂电机械式密码机.它被认为是世界上最复杂的加密设备之一.在这个项目中,我们将使用Python模拟实现恩尼格玛加密 ...
- 鼠标之父:恩格尔巴特于2013年7月3日去世
北京时间7月4日消息,据国外媒体报道,发明了计算机鼠标的硅谷工程师道格拉斯·恩格尔巴特(DouglasEngelbart),昨天在加州阿塞顿家中去世,享年88岁. 道格拉斯·恩格尔巴特被誉为" ...
- 恩格尔系数越大,说明一个家庭越富裕
1.以下有关经济指标的说法正确的是: A.恩格尔系数越大,说明一个家庭越富裕 B.CPI指数越大,表明居民的就业率越高 C.货币供应量越大,说明居民的消费水平越高 D.基尼系数的数值越接近0,表明收入 ...
- 1978-2019年中国各省份城镇与农村恩格尔系数
中国各省份城镇与农村恩格尔系数(1978-2019) 1.时间:1978-2019年 2.范围:31省 3.指标: 城镇恩格尔系数.农村恩格尔系数 恩格尔系数=食品支出/总支出 4.来源:统计NJ.农 ...
- matlab 恩格尔系数模型,基于AR模型的贵州省农村居民恩格尔系数分析
智者论道智库时代 ·220· 基于 AR 模型的贵州省农村居民恩格尔系数分析 范贤广 (贵州工程应用技术学院,贵州毕节 551700) 摘要:文章收集了 1978 年 -2017 年贵州省农村 h 居 ...
最新文章
- 光有面罩不是能防护的
- 使用Ant实现打包jar包上传到服务器
- java宏定义_现代化的 Java (二十六)—— Akka Stream Graph
- 腾讯、百度、小米等7家互联网各大厂的中台建设怎么样了?
- 靶场练习第十天~vulnhub靶场之dc-2
- 数据结构 - 递归 回溯算法(八皇后问题)
- Excel表格模板:记帐汇总凭证表下载
- python 基础 5 while循环语句
- 高数测试——3.29
- JavaSE——Java8之函数式接口、函数式编程、Lambda表达式
- 漫画:图的最短路径问题
- [全网最新最全]2020年国内和国外安卓应用上线上架应用市场渠道集合(关键词:apk,发布,Google Play,Android,详细步骤介绍流程)
- 解决阿里云ECS服务器下载 git 资源慢的问题
- android开发之高仿中国建设银行App
- 【开发教程14】AI语音人脸识别(会议记录仪/人脸打卡机)-AI人脸系统架构
- 前端javascript常见问题总结
- vue : 无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\vue.ps1,因为在此系统上禁止运行脚本
- Python 棋子移动游戏
- 计算机义诊策划书模板,大学生义诊活动策划书
- python新技术_2020年令人期待的Python新功能