编程实现恩格玛加密机(C++)
来源:互联网 发布:淘宝怎么解封永久封号 编辑:程序博客网 时间:2024/06/10 15:18
相信各位看了《模仿游戏》之后,都会对这个二战的加密方法感到很好奇吧,我也不例外,因此编了个程序实现了恩格玛加密机,这机器最大的特点就是有着自反性,只要初始设置一致的时候,那么它就是自反的,比如输入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;}
0 0
- 编程实现恩格玛加密机(C++)
- C语言编程实现使用AES对文件进行加密
- C语言编程实现使用AES对文件进行加密
- C#实现MD5加密
- C实现加密技术
- C实现加密技术
- MD5加密C实现
- objective-c sha1加密实现
- md5加密C语言实现
- c语言md5加密实现
- C语言实现区块加密
- c语言实现des加密
- md5加密C语言实现
- asp.net编程中实现 MD5 加密
- asp.net编程中实现 MD5 加密
- asp.net编程中实现 MD5 加密
- c#、vb.net 实现MD5加密
- 用C#实现Des加密和解密
- Linux软连接和硬链接
- get和post的区别与联系
- java API中提供的HashMap的常用方法
- jquery ajax servlet
- hibernate 4.O 注解 one-to-one 异常
- 编程实现恩格玛加密机(C++)
- poj 1836 Alignment (DP LIS)
- 深入理解磁盘文件系统之inode
- Google Hack技巧——不用暴力也可以取得密码
- Kali_linux_x64安装Compiz
- 在Fragment中使用百度地图
- hive 启动问题记录 及解决方法
- soj3102 O(n)求第k小的数
- Android开发项目经验