首页 > 代码库 > 数据加密标准DES原理

数据加密标准DES原理

    数据加密标准(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网络设计的分组密码易于用硬件实现。

    未完待续、、、、、

数据加密标准DES原理