Bootstrap

DES算法加密流程

des基本特点

  • 用56位密钥加密64位数据(8个奇偶校验)
  • 采用分组加密,feistel密码结构(feistel:简单地说Feistel结构就是顺序地执行两个或多个基本密码系统,使最后结果的密码强度高于每个密码系统的结果)
  • 对称算法:加密和解密除密钥编排不同外,使用同一算法
  • 密钥较短,加密处理简单,加解密速度快,适用于加密大量数据的场合

des算法总流程

详细流程

每轮明文的加密(流程图左半部分)

1.ip置换(先是左边的明文加密部分)

1. 给定明文,通过一个固定的初始置换IP来重排输入明文块P中的比特,得到比特串P0=IP(P)=L0R0,这里L0和R0分别是P0的前32比特和后32比特

初始置换IP

 

2.将ip置换后的明文分成两组

3.右边进入分组密码的轮函数F

4.右半部分继续进入E盒扩展

因为子密钥是48bit,所以将数据通过e盒扩展从32bit——>48bit(注意e盒扩展的规律)

 5.与子密钥异或后,再通过S盒压缩

48bit分成8组,通过8个s盒进行压缩恢复为32bit(注意压缩的方法:第一位与第六位组成行,中间四位组成列。最后查s盒得到的数据的二进制位压缩后的四位结果)

例子

6.s盒的输出结果,通过p盒置换输出,轮函数F结束

7.轮函数F的输出结果再与左半部分异或形成新的R,而原来的R则转为L本轮结束

每轮子密钥的生成(流程图右半部分)

1.先减掉8奇偶校验位,再通过pc-1置换

2.分两组C0与D0进行循环左移位

 3.再进行pc-2的置换。52bit——>48bit,本轮子密钥生成结束,下一轮密钥靠C1、D1循环左移位后继续通过pc-2置换

 最后16轮后注意左右交换,再进行一次ip逆置换即可得到密文

;