深入理解DES
大致步骤
- 将明文按bit为分组,每组64bit,最后一组不足的补0
- 密钥:56bit的密钥
- 用56bit的密钥对64bit的明文加密,每组都这样执行
每一步详细步骤
大家看的时候,把每一个步骤都对着这张图来看。
-
对64bit明文进行初始置换
-
根据IP置换表来置换
可能很多人不理解IP置换的意思,这些表到底怎么置换,怎么压缩?下面解释
- 第一个58:就是将第58bit放到第一位的意思
- 第二个50:就是将第50bit放到第二位的意思
- 以此类推…
- 此表的作用就是将64bit按照一定的规律进行打乱
-
-
将56bit进行置换选择1
利用此表置换,跟置换IP一样的流程- 将密钥的第57bit放到第一位
- 将密钥的第49bit放到第二位
- 以此类推
- 此表的作用就是将56bit按照一定的规律进行打乱
-
将打乱的56bit分成左右两部分,各28bit
-
将左右部分各自循环左移,循环左移的位数按照左循环移位位数表来左移
- 第一轮则循环左移1次
- 第二轮也是
- 第三轮则循环2次
- 以此类推…
-
左循环后的56bit将会给到下一轮继续做轮变换
-
做循环的56bit经过PC-2置换压缩成48bit
注意到这张表没有9 18 22 25 35 38 43 54,所以会达到压缩的效果- 将第14位放到第一位的位置
- 以此类推
- 由于没有9 18 22 25 35 38 43 54,所以会达到压缩的效果
-
将之前置换的64bit明文,分成左右两半部分,将右半部分32bit经过E盒拓展成48bit
置换规则跟之前一样不在阐述
-
将6和7的64bit做异或操作 ,再交给S盒作拓展
S盒的压缩是这样的:
- 将48bit分成8组,每一组的6bit都用一个S盒来压缩
- 6bit的首末两位用来选择行数,中间四位用来选择列数
- 例:101101就是11是行数,0110是列数
- 即用Si盒中的第3行第6列来替换调原来的101101,从6bit压缩到4bit
- 8组各自用各自的S盒来压缩
- 最终变成32bit
-
压缩后的32bit用P置换,再跟左32bit异或作下一轮的Ri
-
原来的Ri-1作为Li
再看看这张表,会觉得特别清晰