- 论坛徽章:
- 15
|
本帖最后由 yulihua49 于 2016-03-07 22:41 编辑
为了方便大家破译,介绍下ENIGMA的表函数。
1.单式查表:C=T(M);M是明文,C是密文。T是一维表。
2.复式查表:C=T(M,pos); pos是位置。密文是明文和位置的表函数。就是ENIDMA。同样的明文字母,在不同位置映射成不同C。(二维表)
3.改进的ENIGMA:C=T(M,pos,length); 密文是明文,位置,电文长度的表函数。不同的电文长度使用的表函数不同。(二维半表,第三维与前两维相关,不独立)
4.被破坏的表函数:Ci=T(Mi,pos,length,T(M(i-1)));在3的基础上,加入前边明文的表函数),就是,已构密文字符,与它前边所有明文字符有关。
表函数名义上存在,实际因为跟明文相关了,无法构建一个常数的表。
从2,ENIGMA来看,只要构建一个二维表,这个密钥就破解了。这个二维表就是类似数独那样的东西。
所以,不管你有多少转轮,多少层加密,都是无意义的。
以上是按字节替换的密钥体制,你可以说它是序列密钥。也可以说它是一个字节一个分组的分组密钥。
为了安全,我们可以在两次加密之间进行变幻,通常是进行各种交换,成为:替换-交换-替换,这就可以认为是整个电文一个分组的分组密钥。这样,经过多重处理,安全程度可以高于DES之类,因为每次替换都是查二维表,比DES那个异或(只相当于单式查表),复杂多了。交换过程也比DES安全,因为可以有复杂的,基于密钥的交换方式。比每轮都在固定位置交换好多了。 |
|