DES详细加密过程

传统密码:

1、单表替换密码 *(密码移位固定)

2、多表替换密码  *(密钥移位周期固定)其中维吉尼亚密码的出现引出了“秘钥”的概念

3、多字母代换密码  *(明文分组交换){1、DES 2、AES}

DES加密过程:(DES算法明文分组长度为64 bit,密钥长度也为64 bit,但是实际密钥长度只有56位,其中第8、16、24、32、40、48、56、64位是奇偶校验位,用于检查密钥在产生、分配及存储过程中可能发生的错误。)

一、明文ip变换

1、明文根据ip置换表重新得到新的明文(所谓ip置换表就是将明文的数字按照ip表中的位置重新定位),得到一个乱序的64 bit 明文组

 

2、将新得到的加密明文分成两个部分,Lo和Ro。

二、子密钥生成

在DES中,加密者输入的明文和密钥都是64 bit,其中只有56 bit是有用的位数(因为有8位为奇偶校验位)。但是DES加密过程有16轮循环函数,其中需要用到16个密钥,所以要将这56 bit密钥扩展生成16个48 bit 的子密钥。步骤如下:

 

 1、PC_1置换的主要步骤和初始IP置换一样,PC_1置换的目的是为了去掉64 bit密钥k中的8个奇偶校验位,并对其余56位打乱排列。置换完成后,同样将密钥分成左右两部分各28 bit,左边为C0, 右边为D0。

 

 2、对于1<=n<=16,在第n轮分别对Cn-1和Dn-1进行循环左移,所移的位数为1位或者2位,取决于n的值,当n=1,2,9,16时左移1位,其它左移2位。因此表格如下:(此时还是56位)

(如Co左移为:1111000011001100101010101111——1110000110011001010101011111)

3. 得到16个子密钥K

在这里插入图片描述

Kn = PC_2(CnDn),PC_2为固定置换,用于从 CnDn(56位) 中选取48 bit作为子密钥Kn,CnDn 表示从左到右将 Dn 排在 Cn 的后面,CnDn 的长度为56 bit。

至此,子密钥全部生成(48位),进入轮函数(轮函数中,首先将32位的一半重定位明文通过E变换转化为48位,如下图所示)。、

 

 

 4、S盒代换

将 E(A) 和 K 进行异或(如果a、b两个值不相同,则异或结果为1。. 如果a、b两个值相同,异或结果为0)操作后,把比特串分为8组,一组 6 bit,分别对每一组进行S盒代换。经过S盒,每一组由 6 bit 缩减为 4 bit。

S盒的行号从0到3,列号从0到15

代换的过程如下,例如需要代换的第一组数据输入为011001,则第一位0和最后一位1组合成的01即为行号,中间的1101为列号,第一组数据对应S1,01转化成10进制为1,1101转化成10进制为13,因此S1中的第1行第13列就为对应的输出,查表得5,转化成2进制为0101。因此0101就为最终的4位输出。

 

 

 

 5、P盒代换

P为固定置换,将经过S盒变换得到的32 bit进行一个置换操作。至此,得到F函数的最终输出。

 

 

6、迭代16次

 

 7、p的逆置换

 

 

 

 

————————————————
版权声明:本文为CSDN博主「pear粥小鲤」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_44143499/article/details/105821846

posted @ 2021-10-10 14:15  一只代码弱鸡  阅读(6901)  评论(0编辑  收藏  举报