数据加密标准算法DES
DES 算法简介
DES 全称为数据加密标准 ,是一种经典的对称密钥分组密码 算法。它于1977年被美国国家标准局采纳为联邦标准,在随后的二十多年里,在全球范围内被广泛应用于金融、通信等领域的商业数据加密。56位有效密钥长度是DES最主要的安全缺陷 。随着计算机算力的飞速提升(摩尔定律),1998年后,专用的"DES破解机"可以在数小时甚至数分钟内通过穷举所有密钥(2^56种可能)来破解DES。因此,DES 已不再安全,不应被用于任何需要安全性的新系统中。
DES 算法参数
DES算法采用Feistel 结构,其分组大小为64比特,密钥长度为64比特(密钥总长64位,但其中8位用于奇偶校验,实际有效密钥长度为56位),迭代轮数为16轮。
DES 算法轮函数
将初始置换后的64位数据分成左右两半,各32位(L0和R0),则DES算法的加密轮变换为(Li,Ri)=(Ri-1,Li-1⊕F(Ri-1,RKi));将最终置换后的64位数据分成左右两半,各32位(L16和R16),DES算法的解密轮变换为(Li,Ri)=(Ri+1⊕F(Li+1,RKi),Li+1)。其中轮函数F(X,RKi)=P(S(E(X⊕RKi)))。轮函数如下图所示:

扩展变换E:将32比特的输入扩展为48比特输出,如下图所示:

S盒变换:这是DES最核心、最神秘的非线性部分。将48比特的输入数据平均分为8个6比特块,这8个6比特块依次输入8个对应的的6X4的S盒(s1,s2,s3,s4,s5,s6,s7,s8),如下图所示:

其中(s1,s2,s3,s4,s5,s6,s7,s8),如下图所示:

比特置换P:P为以比特为单位的32比特换位置换,置换表及其逆置换表如下图所示:

DES 算法加密算法

其中IP为初始64比特换位置换,FP为最终64比特换位置换,FP置换为IP置换的逆变换,如下图所示:

DES 算法解密算法
与加密过程完全一致,唯一区别是16 个子密钥的使用顺序相反(RK15用于第一轮,RK0用于最后一轮)。

DES 算法密钥扩展算法
56位密钥的生成过程:
(1)将初始的64位密钥从1到64位进行编号,形成一个矩阵,如下图所示,每一行的第八位将作为奇偶校验位被忽略,于是形成了初始的56位的密钥输入:

(2)接下来使用选择置换表(如下图所示),进行置换操作。

(3)将第(2)步得到的输出按顺序分为左右两个部分,每个部分有28位,分别用
L0和R0来表示,根据轮迭代的轮数,在第1,2,9,16轮时分别将L0和R0循环左移一位,其余轮数时循环左移两位,得到56位的输出。每轮对应的循环移位数如下图所示:

(4)再将第(3)得到的输出按照下图的置换表,进行密钥压缩置换为48位的密钥,得到的是在轮变换里面输入的密钥RKi:

DES 算法总结
简单来说,DES是密码学发展史上的一座里程碑,它首次将现代密码学带入了公众视野并实现了标准化。虽然由于其密钥过短而已被淘汰,但其精巧的Feistel结构和S盒设计思想,至今仍在密码学教育和新算法设计中具有重要价值。