DES加密原理

DES的安全性依赖于虚假表象,从密码学的术语来讲就是依赖于“混乱和扩散”的原则。混乱的目的是为隐藏任何明文同密文、或者密钥之间的关系,而扩散的目的是使明文中的有效位和密钥一起组成尽可能多的密文。两者结合到一起就使得安全性变得相对较高。

密钥构成:64位的密钥包括56+8奇偶校验位(第8,16,24,32,40,48,56,64),对64位为单位的块数据进行加解密。

1)填充:

DES还是一种分组加密算法,该算法每次处理固定长度的数据段,称之为分组。DES分组的大小是64位,如果加密的数据长度不是64位的倍数,可以按照某种具体的规则来填充位。

2)明文置换

置换矩阵(位置矩阵,代表操作后位置,原先的58位放在第一位):

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,

图1 置换矩阵

3)密钥加密

进行16轮完全相同的运算,在运算过程中数据与秘钥结合。

函数f的输出经过一个异或运算,和左半部分结合形成新的右半部分,原来的右半部分成为新的左半部分。公式如下:

 

 

 

⊕:异或运算

Kn是向第N层输入的48位的秘钥,f 是以Rn-1和Kn-1为变量的输出32位的函数

通过将原32位数据中的某些位重复出现达到扩展的目的。扩展置换也称位选择函数,俗称E盒。扩展置换(E)通过将第32、1、4、5、8、9、12、13、16、17、20、21、24、25、28、29共16位分别放置在两个位置,从而将32位的数据扩展为48位。扩展后的48位与K1进行异或。

以下异或 置换 等参考:https://blog.csdn.net/yxtxiaotian/article/details/52025653

异或后的结果通过S盒子转换为32位

经过S盒子得到的32位再进行P盒置换

P盒置换后的结果通过异或和交换形成L1和R1

 

 

在完成完全相同的16轮运算后,将得到的两部分数据合在一起,将L16与R16的位置交换,再经过一个末置换函数IP-1即可得到64位的密文。

4)子密钥的产生

在3)中使用的Kn,n=1...16;

 

其中密钥置换 PC-1如下表1所示:

去掉奇偶校验位,压缩置换为56位; 然后分为前后的两个部分;C0,D0

 

图2 的移位是按照表2进行16轮的循环左移

 

压缩置换成48的的子密钥:

参考

https://blog.csdn.net/yxtxiaotian/article/details/52025653

https://blog.csdn.net/qq_27570955/article/details/52442092

 

 


版权声明:本文为qq_23097791原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。