DES加密

Data Encryption Standard

秘钥长度为64位,其中8位为校验位(奇偶校验码)

2003年左右被暴力破解(穷举法)

被AES取代(Advanced Encyption Standard)

AES支持的秘钥长度包括128bit、192bit、256bit、384bit、512bit

DES加密这里拆成两个线来记录各自的动作(明文与秘钥)


DES的粗略步骤

1、明文

2、初始置换——得到L0和R0,并且加入K1进行一次运算

3、16轮迭代运算——不停地令L1=R0、R1=L0与f(R0,K1)迭代运算

4、逆初始置换

5、得到密文


DES加密过程详解

1、子秘钥获取--置换选择(一)

如图有一个PC-1表,K+的具体数值由PC-1先横后列地数字一一对应填入。

例如K+的第一位1就是由原K的第51位填入(因为PC-1的第一个位置是51)

最后将K+分成左右两部分C0D0(各28bit)

2、DES轮操作(秘钥)

得到的Li与Ri分别左移得到新的Li+1、Ri+1

同时将左移后的左右两部分Li、Ri进行PC2运算,得到Ki(第i轮的秘钥)

2.1子秘钥获取--循环左移

2.2子秘钥获取--置换选择(二)/压缩置换

根据pc-2表进行压缩置换操作,将56位的C1D1拼接压缩成48位作为Ki

具体操作和1里面一样

3、明文处理--初始置换

也是按表进行置换,之后拆成L0和R0两部分,接下来进行明文的轮操作

4、DES轮操作(明文)

其中F为函数操作,NOR为异或操作、Ri-1作为下一轮的Li使用,Li-1作为下一轮的Ri使用

其中Expansion...为扩展置换(32位->48位),Substition...位压缩置换,Permutation为P置换

4.1拓展置换

按照E TABLE表

第一位左从原32位(0)借过来,第四位右边从原5位(0)借过来,则原1111变成了011110

以此类推,则可将32位拓展成位48位

4.2压缩置换S

将之前拓展的48位进行亦或操作之后,再进行压缩置换成32位

对于011000,按照左上角图拆分为00和1100,即0、12

再按照0行12列查S1表,得到5,使用5的二进制代替原来的011000

即011000->0101 压缩完成

4.3 P置换

按照P表进行对应位置的重排置换,得到F函数的结果,比较简单就不放图了。

5、DES16轮后两步
5.1明文加密-左右交换

L16= 0100 0011 0100 0010 0011 0010 0011 0100

R16= 0000 1010 0101 1100 1101 1001 1001 0101

则交换后

R16L16=00001010 01001100 ...... 00110100

5.2逆置换

将R16L16再按照一个拟置换表换一下位置,则得到了最后的64位密文

Last modification:October 15th, 2020 at 06:16 pm
如果觉得我的文章对你有用,请随意赞赏