DES算法描述 DES 是对二元数字分组加密的分组密码算法,分组长度为64 比特。每64 位明文加密成64 位密文,没有数据压缩和扩展。密钥长度为56 比特,有时会输入64 比特,则第8、16、24、32、40、48、56、64 为奇偶检验位。所以,实际密钥只有56 位。DES 算法完全公开,其保密性完全依赖密钥。 图8.4 是DES 全部16 轮(Round)的加/解密结构图,其最上方的64 比特输入分组数据,可能是明文,也可能是密文,视使用者要做加密或解密而定。而加密与解密的不同之处,仅在于最右边的16 个子密钥的使用顺序不同,加密的子密钥顺序为K1,K 2,...,K16,而解密的子密钥顺序正好相反,为K16,K15,... 1 K ,K ,L, K 。 DES 算法首先对输入的64 位明文X 进行一次初始置换IP (图8.3),以打乱原来的次序。对置换后的数据0 X 分成左右两半,左边记为 L0 右边记为R0 。对R0 施行在密钥控制下的变换f ,其结果记为 f (R0 ,K1 ),得到的32 比特输出再与L0 做逐位异或(XOR)运算。其结果成为下一轮的R1 , R0 则成为下一轮的L1 。对L1 , R1 施行和L 0,R0 同样的过程得L2 ,R2 。如此循环16 次,最后得L16 , R16 。再对64 位数字 R16 , L16 施行初始置换的逆置换IP -1 (图8.3),即得密文y 。运算过程可用公式(式8.1)简洁地表示如下。
Ri=Li-1⊕f(Ri-1,Ki)
Li=Ri-1 i=1,2,...,16
式8.1
注意,在16 次加密后并未交换16 16 L , R ,而直接将16 16 R , L 作为IP -1 的输入。这样使得 DES 的解密和加密完全相同,在以上过程中只需输入的是密文,最后获得的就是相应的明 文。 以上是对DES 加解密过程的描述。我们把从i-1 i-1 L R 到i i L R 的变换过程称为一轮加密, 所以DES 要经过16 轮加密,或称为16 轮迭代。每一轮施行的变换完全相同,只是每轮输 入数据不同。 式8.1 40 8 48 16 56 24 64 32 39 7 47 15 55 23 63 31 38 6 46 14 54 22 62 30 37 5 45 13 53 21 61 29 36 4 44 12 52 20 60 28 35 3 43 11 51 19 59 27 34 2 42 10 50 18 58 26 33 1 41 9 49 17 57 25 IP-1 58 50 42 34 26 18 10 2 60 52 44 36 28 20 12 4 62 54 46 38 30 22 14 6 64 56 48 40 32 24 16 8 57 49 41 33 25 17 9 1 59 51 43 35 27 19 11 3 61 53 45 37 29 21 13 5 63 55 47 39 31 23 15 7 IP 图8.3 初始置换IP 及逆初始置换IP-1 |