本文只关注一个核心任务 —— 如何把 64 位的明文,用 64 位的密钥,加密成 64 位的密文,并执行解密,需要理解这个过程。
DES已经很少使用了,主要是想学习它的Feistel network (费斯妥网络)。
其实,了解这些加密的流程没啥用,这些是无用的信息。我认为要理解每个步骤背后的数学原理,数学观点上证明它这个步骤是安全的,这个才是通用的、有用的知识。
一些基础概念
对称加密
双方拥有同一个密钥,加密、解密是同一个密钥完成,该秘钥不对第三方公开。
分组密码
分组密码是将明文分成固定长度的组,每一组都采用同一密钥和算法进行加密,输出也是固定长度的密文。
分组长度
DES 加密算法中,明文和密文为 64 位分组。密钥的长度为 64 位,但是密钥的每个第八位设置为奇偶校验位,因此密钥的实际长度为56位。
时序图
DES 算法是在 Feistel network (费斯妥网络)的基础上执行的。以下是 DES 算法的流程图:
TODO...
步骤拆分
DES 加密流程大致分为 4 个步骤:
(1)初始置换
(2)生成子密钥
(3)迭代过程
(4)逆置换
步骤挺长,每个步骤问AI吧。
Reference
DES算法原理及实现
https://www.ruanx.net/des/
浙公网安备 33010602011771号