《图解密码技术》读书笔记(二)——DES算法原理


DES的基本结构为Feistel网络。

(一)Feistel网络的加密过程

在Feistel网络中,加密的各个步骤,称为轮round,整个加密过程就是经过若干次轮的循环。

下图是Feistel网络一轮的运行过程。

《图解密码技术》读书笔记(二)——DES算法原理



用文字描述一轮:

1. 将输入的数据等分为左右两部分;

2. 将输入的右侧,直接发送到输出的右侧;

3. 将输入的右侧发送到轮函数;

4. 轮函数根据右侧数据和子**,计算出一串看上去是随机的比特序列;

5. 将上一步得到的比特序列与左侧数据进行XOR运算,并将结果作为加密后的左侧。


经过一轮之后,可以看到,左侧数据得到了加密,右侧数据没有加密。

此时开始第二轮,将左侧已加密的数据移动到右侧,右侧未加密数据移动到左侧,然后执行一轮加密。

此时,经过轮换,可以看到左右两侧都得到了加密。

DES就是一种16轮的Feistel网络。


(二)Feistel网络的解密过程

事实上,根据XOR的性质,将一轮加密的输出结果,用子**重新运行一次,都能够将密文正确还原为原文。

看从下图观察还原过程:

《图解密码技术》读书笔记(二)——DES算法原理


因此,Feistel网络的解密操作,只需要用相反的顺序来使用子**就可以完成了。