DES加密算法总结

DES加密算法总结

                                                           2006-04-11   李亚楠

 

数据加密标准DESData Encryption Standard)为IBM公司设计的数据加密方案,与19711月被美国政府采用为非机密数据的数据加密标准。它具有以下特点:

1、              具有相当高的复杂性,使得破译的开销超过可能获得利益,同时又要便于理解和掌握。

2、              DES密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密为基础。

3、              实现经济,运行有效,并使用于多种不同的应用

   

DES算法的入口参数有三个:KeyDataMode。其中Key8个字节共64位,是DES算法的工作密钥,Data也为8个字节64位,是要被加密或解密的数据,ModeDES的工作方式,有两种:加密或者解密。

DES算法是这样工作的,若Mode为加密,则用Key去把数据Data进行加密,生成的Data的密码形式(64位)作为DES的输出;若Mode为解密,则用Key去把密码形式的数据Data解密,还原位Data的明码形式(64位)作为DES的输出结果,在通信网络的两端,双方约定一致的Key,在通信的端点用Key对核心数据进行DES加密,然后以密码的形式在公共通信网中传输到通信网络的终点,用同样的Key对密码数据进行解密。这样,便满足核心数据在公共通信网中传输的安全性和可靠性。

通过定期在通信网络的源端和目的端同时改用新的Key,便能更进一步提高数据的保密性。

 

DES算法把64位的明文输入块变为64位的密文输出块,它使用的密钥也是64位,其算法分为3个步骤:

 

1.初始置换

其功能是把输入的64位数据块按位重新组合,并把输出分为L0R0两部分,每部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位等等依此类推,最后一位是原来的第7位。L0R0则是换位输出后的两部分,L0是输出的左32位,R0是右32位,例:设置换前的输入值为D1D2D3……D64,则经过初始置换后的结果为:L0=D58D50……D8;R0=D57D49……D7

       初始置换规则见下表:

58,50,12,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,

216次迭代运算

     变换密钥:

       取得56位密钥,每个第8位为奇偶校验,舍弃奇偶校验位变成56位的密钥,按照如下置换规则置换:

       57 49 41 33 25 17 9

1 58 50 42 34 26 18

10 2 59 51 43 35 27

19 11 3 60 52 44 36

63 55 47 39 31 23 15

7 62 54 46 38 30 22

14 6 61 53 45 37 29

21 13 5 28 20 12 4

将变换后的密钥分成两个部分,开始的28位成为C[0],后面的28位成为D[0]

           生成16个密钥

初始化 I=1

C[I-1]D[I-1]进行循环左移,分别得到C[I]D[I],循环左移的位数取决于I的值,如果I=12.916,循环左移的位数等于1,否则循环左移的位数等于2。这些经过移位的值将作为下一个循环的输入。这样得到C[1]C[16]D[1]D[16]

C[I]D[I]作为一个整体按下面置换规则进行置换,得到48位的K[I]

14 17 11 24 1 5

3 28 15 6 21 10

23 19 12 4 26 8

16 7 27 20 13 2

41 52 31 37 47 55

30 40 51 45 33 48

44 49 39 56 34 53

46 42 50 36 29 32

            循环计算,直到K[1]K[16]被计算出来。

 

           迭代计算:

计算公式:I=1

          L[I] = R[I-1]

          R[I] = L[I-1]⊕f(R[I-1],K[I])

 

其中f(R[I-1],K[I])作如下解释:

标志:32位的R[I-1]按下表(E)扩展为48位的E[I-1]

32 1 2 3 4 5

4 5 6 7 8 9

8 9 10 11 12 13

12 13 14 15 16 17

16 17 18 19 20 21

20 21 22 23 24 25

24 25 26 27 28 29

28 29 30 31 32 1

            异或E[I-1]K[I],即E[I-1] XOR K[I]

将异或后的结果分为86位长的部分,第1位到第6位称为B[1],第7位到第12位称为B[2],依此类推,第43位到第48位称为B[8]

●按照S表置换B[J],初始J=1。在S表中所有的数都当作4位处理

●将B[J]的第1位和第6位组合成一个2位数MM作为S[J]表中的行号

●将B[J]中的第25位组合成一个4位数NN代表S[J]表的列号

●用S[J][M][N]来取代B[J]

 

 

S[J]置换表如下:


         S[1]表:

     14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7

0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8

4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0

15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13

S[2]表:

15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10

3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5

0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15

13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9

S[3]表:

10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8

13 7 0 9 3 4 6 10 2 8 5 14 12 11 15 1

13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7

1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12

S[4]表:

7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15

13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9

10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4

3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14

S[5]表:

2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9

14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6

4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14

11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3

S[6]表:

12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11

10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8

9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6

4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13

S[7]表:

4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1

13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6

1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2

6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12

S[8]表:

13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7

1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2

7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8

2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11

循环执行,直到B[8]被替代完成,将B[1]B[8]组合,按下表变换,得到P

16 7 20 21 29 12 28 17 1 15 23 26 5 18 31 10

2  8 24 14 32 27 3  9  19 13 30 6 22 11 4 25

          P就是f(R[I-1],K[I])的结果,R[I]=P XOR L[I-1],循环计算

         


   2.逆置换

      经过16次迭代运算,得到L16R16,将此作为输入,进行逆置换,逆置换正好是初始置换的逆运算,由此即得到密文输出,置换规则:

  40 8 48 16 56 24 64 32

39 7 47 15 55 23 63 31

38 6 46 14 54 22 62 30

37 5 45 13 53 21 61 29

36 4 44 12 52 20 60 28

35 3 43 11 51 19 59 27

34 2 42 10 50 18 58 26

33 1 41  9 49 17 57 25

     

 

 

附:DES加密运算框图:

附:函数f 的计算过程:

   

 

                                        

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值