DES
DES 曾经是 1977 年美国联邦信息处理标准中所采用的一种对称密码。曾经得到了广泛的使用。不过随着计算机算力的提升,DES 已经不再安全,可以在短时间内通过暴力破解。所以现在 DES 已经不在推荐使用。
DES 密钥长度为 64 比特,每次可以加密 64 比特的明文。如果明文长度大于 64 比特,就需要对明文比特序列进行分组,迭代加密,迭代的方式称为模式。
DES 的加密结构由 Horst Feistel 设计,由于图形化标示后像一张网,所以也称为 Feistel 网络。Feistel 网络中每次加密都要经过数轮。
Feistel 网络中,首先将要加密的 64 比特分成左右各 32 比特,右侧的 32 比特和轮函数及子密钥输出加密左侧用的比特序列。左侧32比特序列与其做 XOR 运算后,得到加密的密文。此时反转左右侧,重复操作一次后,全部64位比特都被加密。根据加密强度的需要,可以进行多轮操作。
大家可能会有问题,每轮只加密一半比特序列,是不是效率太低了?其实这是为了确保可解密性。
我们看看 DES 是如何解密的。为了简化问题,我们只进行一轮加密。此时我们不对调左右侧比特序列,再使用右侧32位比特+子密钥+轮函数计算出比特序列。这个比特序列其实和之前加密用的比特序列完全一样,原因是输入和算法一样。左侧加密过的32比特和此比特序列做 XOR 运算,由于 XOR 运算的特性,加密过的左侧32比特会被还原回原来的 32 比特,这时就完成了解密。
加密时无论轮次有多少、无论轮函数如何实现,通过逆向操作都可以正确解密。
慎用
- AES加密算法可以替代DES,AES 算法是经过公开选拔所产生。这样彻底杜绝了隐蔽式安全性。