数据加密标准(DES)是在20世纪70年代中期由美国IBM公司发展出来的,并被美国国家标准局公布为数据加密标准的一种分组加密算法。
DES算法的分组大小为64位,所使用的加密或解密密钥也是64位。因为其中有8个位是用来做奇偶校验,所以64位中真正起密钥作用的只有56位。DES加密与解密所用的算法除了子密钥的顺序不同之外,其他部分则是完全相同。
1)Feistel网络
DES密码结构基于一个称为Feistel网络的结构。Feistel网络是由Horst Feistel在设计Lucifer分组密码时发明的,并被DES、FEAL、Twofish、RC5等算法使用。
Feistel定义了一个迭代的分组密码算法,其本质是利用乘积密码顺序地执行多个基本密码系统,使得最后结果的密码强度高于每个基本密码系统产生的结果。
对一个分组长度为2n位的r轮Feistel型密码,每轮迭代执行的运算相同,而每轮的输入取决于前一轮的输出。以第i轮为例,描述每轮迭代的运算过程如下:
①将第i-1轮的输出结果m作为本轮的输入,并将输入划分为左右长度相等的两部分,记作m=L R ,L 和 R 分别为m的左右 n 位。
②将左右两部分交换位置,并将右半部分R直接作为本轮输出m的左半部分L。同时,将右半部分R和轮密钥K 作为论函数F的输入,将论函数F的输出与左半部分L进行逐位的异或运算,得到的结果作为输出m的右半部分R。
Feistel网络的解密过程与加密过程完全一致,只是以相反的次数使用每轮的子密钥,这个特点使得基于Feistel网络设计的分组密码易于用硬件实现。
未完待续、、、、、