《图解密码技术》读书笔记(二)——DES算法原理
DES的基本结构为Feistel网络。
(一)Feistel网络的加密过程
在Feistel网络中,加密的各个步骤,称为轮round,整个加密过程就是经过若干次轮的循环。
下图是Feistel网络一轮的运行过程。
用文字描述一轮:
1. 将输入的数据等分为左右两部分;
2. 将输入的右侧,直接发送到输出的右侧;
3. 将输入的右侧发送到轮函数;
4. 轮函数根据右侧数据和子**,计算出一串看上去是随机的比特序列;
5. 将上一步得到的比特序列与左侧数据进行XOR运算,并将结果作为加密后的左侧。
经过一轮之后,可以看到,左侧数据得到了加密,右侧数据没有加密。
此时开始第二轮,将左侧已加密的数据移动到右侧,右侧未加密数据移动到左侧,然后执行一轮加密。
此时,经过轮换,可以看到左右两侧都得到了加密。
DES就是一种16轮的Feistel网络。
(二)Feistel网络的解密过程
事实上,根据XOR的性质,将一轮加密的输出结果,用子**重新运行一次,都能够将密文正确还原为原文。
看从下图观察还原过程:
因此,Feistel网络的解密操作,只需要用相反的顺序来使用子**就可以完成了。