DES算法过程解析

第一步:置换初始表

对输入数据进行表置换,使得数据得到混淆。

取数据的前32个Bit 为L0 后32个Bit为R0

第二步:进行16轮迭代

  • L1=R0 R1=L0^F(R0,K1)

函数过程为

1.对R0进行拓展运算E

每4个Bit为一行,前后各拓展一位,如图所示。。

2.与子密钥Ki进行异或(同样为48位)子密钥如何生成后面会说。

3.选择压缩算法,将数据计算回32位

这时候需要用到S盒子,这部分时该算法最敏感的部分,S盒从何而来至今仍未公开。

每6位数据压缩成4位数据位1,6组成行2345 组成列来查询S盒,得到4位数据

4.置换运算P,即可得到R1

通过置换表1的混淆,我们即可得到 R1 现在关键是 K1是如何生成的了,循环16次 即可得到最后的密文。

算法如图所示:

密钥生成算法:

首先密钥是64位的,对 8 16 32…..64位直接抛弃。得到 56位的 有效密钥

先把有效密钥按照 PC-1进行排序 得到 左C0 右D0 对 C0 D0 进行 PC-2置换,得到密钥K1

对C0 D0 进行循环左移 进行16 次 每次左移的位数如图:

算法如图所示: