Enigma
Enigma
原理图
原理图
反射器
3 2 1
连接板
明文
密文
3 个转子
连接板
连接板
连接板的工作其实就是实现简单的密码替
连接板的工作其实就是实现简单的密码替
换。用一根连线把某个字母和另一个字母
换。用一根连线把某个字母和另一个字母
连接起来,这样这个字母的信号在进入转
连接起来,这样这个字母的信号在进入转
子之前就会转变为另一个字母的信号 。
子之前就会转变为另一个字母的信号 。
在
在
Enigma
Enigma
密码机连接板上可最多有
密码机连接板上可最多有
13
13
根
根
连线。
连线。
连接板上布线的不同也成为了密钥的一部
连接板上布线的不同也成为了密钥的一部
分。
分。
程序中实现连接板
程序中实现连接板
1.
1.
定义连接板
定义连接板
char plug[]="AMTE";
char plug[]="AMTE";
2.
2.
实现交换
实现交换
for (i=0; plug[i]; i+=2)
for (i=0; plug[i]; i+=2)
{
{
if (ch==plug[i])
if (ch==plug[i])
ch=plug[i+1];
ch=plug[i+1];
else if (ch==plug[i+1])
else if (ch==plug[i+1])
ch=plug[i];
ch=plug[i];
}
}
密码机核心部件——转子
密码机核心部件——转子
作用:把一个字符映射为另一字符而,完
作用:把一个字符映射为另一字符而,完
成简单密码替换,而且能够转动,使生成
成简单密码替换,而且能够转动,使生成
的密文不仅与明文有关,而且与转子所处
的密文不仅与明文有关,而且与转子所处
的位置有关。使用统计字母出现频率来进
的位置有关。使用统计字母出现频率来进
行破译将无效。
行破译将无效。
如果使用单个转子,当转完一圈后将出现
如果使用单个转子,当转完一圈后将出现
重复,不利于比较大的明文进行加密。
重复,不利于比较大的明文进行加密。
Eni
Eni
gma
gma
密码机使用三个转子。
密码机使用三个转子。
程序中实现转子
程序中实现转子
转子密码映射表
转子密码映射表
char rotor[5][27]={
char rotor[5][27]={
/* 1: */ "EKMFLGDQVZNTOWYHXUSPAIB
/* 1: */ "EKMFLGDQVZNTOWYHXUSPAIB
RCJ",
RCJ",
/* 2: */ "AJDKSIRUXBLHWTMCQGZNPYFV
/* 2: */ "AJDKSIRUXBLHWTMCQGZNPYFV
OE",
OE",
/* 3: */ "BDFHJLCPRTXVZNYEIWGAKMUS
/* 3: */ "BDFHJLCPRTXVZNYEIWGAKMUS
QO",
QO",
};
};
- 1
- 2
前往页