DES 加密算法原理

  DES加密算法是由 IBM 研究在1977年提出的。使用64位(bit)的数据进行加密和解密的,所用的密钥也是64位。并被美国国家标准局宣布为数据加密标准DES,主要用于非国家保密机关。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

===>

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

1

0

0

1

1

0

0

1

1

0

0

0

1

1

0

0

0

1

1

1

0

1

1

1

0

0

0

0

1

1

0

0

1

1

1

1

1

1

0

0

1

0

1

0

0

1

0

0

1

0

1

1

1

0

0

1

0

1

0

1

0

0

0

 什么?你做错了!无药可救!我怀疑你小学毕业考试是不是作弊了。
  没做错!嗯,真是好孩子!

  第二步:迭代过程
  这是很重要的一步(站稳了,不要腿软)。为了让你看得更清楚,我把它分成几个部分。最后只要把几部分的过程合起来做就行了。
  ★先把 IP 处理后的结果分成两部份,如下:

1

1

0

0

1

1

0

0

1

1

0

0

0

1

1

0

0

0

1

1

1

0

1

1

1

0

0

0

0

1

1

0

 

0

1

1

1

1

1

1

0

0

1

0

1

0

0

1

0

0

1

0

1

1

1

0

0

1

0

1

0

1

0

0

0

↓                              ↓

 ╱                             F
↓                              ↓

0

1

1

1

1

1

1

0

0

1

0

1

0

0

1

0

0

1

0

1

1

1

0

0

1

0

1

0

1

0

0

0

 

  看明白了没有?先把右面的部分原封不动地照抄到左边。然后把左边的部分经过F处

理后搬到右面。然后再重复做第二步,共做 16 遍(真麻烦)。先别急,F处理等会儿再讲

  第三步: IP-1 处理
  如果这一步你再做错的话,自已拿块豆腐撞死算了!不过是 IP 的逆代换罢了。

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算法加密过程
对DES算法加密过程图示的说明如下:待加密的64比特明文串m,经过IP置换后,得到的比特串的下标列表如下:

IP585042342618102
605244362820124
625446383022146
645648403224168
57494133251791
595143352719113
615345372921135
635547393123157

该比特串被分为32位的L0和32位的R0两部分。R0子密钥K1(子密钥的生成将在后面讲)经过变换f(R0,K1)(f变换将在下面讲)输出32位的比特串f1,f1与L0做不进位的二进制加法运算。运算规则为:

f1与L0做不进位的二进制加法运算后的结果赋给R1,R0则原封不动的赋给L1。L1与R0又做与以上完全相同的运算,生成L2,R2…… 一共经过16次运算。最后生成R16和L16。其中R16为L15与f(R15,K16)做不进位二进制加法运算的结果,L16是R15的直接赋值。

R16与L16合并成64位的比特串。值得注意的是R16一定要排在L16前面。R16与L16合并后成的比特串,经过置换IP-1后所得比特串的下标列表如下:

IP-1408481656246432
397471555236331
386461454226230
375451353216129
364441252206028
353431151195927
342421050185826
33141949175725

经过置换IP-1后生成的比特串就是密文e.。
下面再讲一下变换f(Ri-1,Ki)。
它的功能是将32比特的输入再转化为32比特的输出。其过程如图所示:


对f变换说明如下:输入Ri-1(32比特)经过变换E后,膨胀为48比特。膨胀后的比特串的下标列表如下:

E:3212345
456789
8910111213
121314151617
161718192021
202122232425
242526272829
282930313231

膨胀后的比特串分为8组,每组6比特。各组经过各自的S盒后,又变为4比特(具体过程见后),合并后又成为32比特。该32比特经过P变换后,其下标列表如下:

P:1672021
29122817
1152326
5183110
282414
322739
1913306
2211425

经过P变换后输出的比特串才是32比特的f (Ri-1,Ki)。
下面再讲一下S盒的变换过程。任取一S盒。见图:

在其输入b1,b2,b3,b4,b5,b6中,计算出x=b1*2+b6, y=b5+b4*2+b3*4+b2*8,再从Si表中查出x 行,y 列的值Sxy。将Sxy化为二进制,即得Si盒的输出。(S表如图所示)


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值