剧情简介

二战期间,盟军苦于德国的密码系统“英格玛”无法破译,政府召集了一批数学家、逻辑学家进行秘密破解工作,艾伦·图灵(本尼迪克特·康伯巴奇饰)就是其中之一。破解计划刚开始,图灵遭到了以休·亚历山大(马修·古迪饰)为首的组员和领导的排斥,幸而军情六局局长斯图尔特·孟席斯(马克·斯特朗饰)帮助他立项研究破译密码的机器,而图灵则变成了负责人,并招收了新的成员琼·克拉克(凯拉·奈特莉饰)开始艰难的工作。琼很快就迷上了图灵,由于她的帮助所有组员空前的团结,并于两年后成功破解了德军密码。图灵一度与琼订婚,但却隐瞒了一个秘密,因为这个秘密他最终遭受到非人的待遇……




直到第一次世界大战结束为止,所有密码都是使用手工来编码的。 // 铅笔加纸


明文(就是没有经过加密的原始文本),必须由加密员人工一个一个字母地转换为密文。


考虑到不能多次重复同一种明文到密文的转换方式


转换通常是采用查表的方法,所查表每日不同。 // 解码速度极慢,接收密码一方又要用同样的方式将密文转为明文。



这就造成了编码效率低下的问题








简单替换密码


拼图游戏 unity3d 拼图游戏双女泰剧_ci


凯撒法就是一种简单替换法,通过对单字母的替换位置得到不同的密码表。


比如说 A、B、C、D、E  。每个字母向字母表后移一位。那么就得到了:B、C、D、E、F。


这种单字母替换的方式很容易就被破解了出来了。




由此衍生出了多字母替换表,通过增加一行密码表来对明文进行重复加密。


明文:       A、B、C、D、E 、F、G、H、I、J、K


替换表1:B、C、D、E、F、G、H、I、J、K、L


替换表2:C、D、E、F、G、H、I、J、K、L、M


以及后来的矩阵加密表


通过不停增加替换表来对明文进行一次重复加密。




#include <iostream>
using namespace std;
/*单行密码加密实现*/
void replace(char Ex[256],char Cp[256])
{
	int i = 0;
	while (Ex[i] != '\0') {
		if (Ex[i] < 0 || Ex[i] < 117)
<span style="white-space:pre">		</span>{
		<span style="white-space:pre">	</span>Cp[i] = Ex[i] + 1;
<span style="white-space:pre">		</span>}<span style="font-family: Arial, Helvetica, sans-serif;">else </span>
<span style="font-family: Arial, Helvetica, sans-serif;"><span style="white-space:pre">						</span>Cp[i] = Ex[i] - 1;</span>
i++;
	}
	Cp[i++] = '\0';
	cout << "加密结果:" << endl<< Cp << endl;

}
int main()

{
	char Express[256], cipher[256];
	do 
	{
		cout << "请输入明文:" << endl;
		cin >> Express;
		replace(Express, cipher);
	} while (Express != '\0');//ASCII码,对是0,对应的字符是(Null)
	
}