DES算法总的说来可以两部分组成:
一、对密钥的处理。这一部分是把我们用的64位密钥(实际用的56位,去掉了8个奇偶校验位)分散成16个48位的子密钥。
二、对数据的加密。通过第一步生成的子密钥来加密我们所要加密的数据,最终生成密文。
下面就通过这两部分分别介绍DES算法的实现原理。
一.密钥分散——子密钥的生成
64比特的密钥生成16个48比特的子密钥。其生成过程见图:
64比特的密钥K,经过PC-1后,生成56比特的串。其下标如表所示:
该比特串分为长度相等的比特串C0和D0(分别为28比特)。然后C0和D0分别循环左移1位,得到C1和D1。C1和D1合并起来生成C1D1。C1D1经过PC-2变换后即生成48比特的K1。K1的下标列表为:
C1、D1分别循环左移LS2位,再合并,经过PC-2,生成子密钥K2……依次类推直至生成子密钥K1