DES 使用一个 56 位的密钥以及附加的 8 位奇偶校验位(每组的第8位作为奇偶校验位),产生最大 64 位的分组大小。这是一个迭代的分组密码,使用称为 Feistel 的技术,其中将加密的文本块分成两半。使用子密钥对其中一半应用循环功能,然后将输出与另一半进行“异或”运算;接着交换这两半,这一过程会继续下去,但最后一个循环不交换。DES 使用 16 轮循环,使用异或,置换,代换,移位操作四种基本运算。
算法思想:
1.输入64位比特明文数据,根据IP置换表混淆。
2.将混淆的64位数据分成左右两部分。分别为32位L0,32位R0。Li=Ri-1,Ri =Li-1⊕ F(Ri-1,Ki)。根据此关系进行16轮迭代,将L16和R16交换,得到R16L16,作为IP逆置换的输入。
3.Feistel函数:将传入的32位右半段二进制串经过循环扩展表扩展成48位。 再用得到的48位二进制串与对应的子密钥进行位移或运算。 将异或运算所得48位分成8组,每组是一段6位二进制串。 每组分别通过相应的S盒进行6-4变换(S盒变换),由6位变为4位。合并8组,形成32位二进制串作为Feistel轮函数的输出。
4.通过IP逆置换输出64比特密文数据。
总结:DES具有很好的雪崩效应,明文或密钥的微小改变将对密文产生很大的影响,安全性高,但是仍存在密钥较短等一些问题。