Está en la página 1de 12

DES 加密實做 ( 1 層加密

)
定義金鑰:ABCDEFGH
定義明碼(DATA):ILOVEYOU
KEY 加密:
將 ABCDEFGH 轉成 16 進制後再轉為 2 進制
(因用計算機換算 2 進制後是 7 碼,需要在最前面補『0』使 1 組成為 8 碼共 8 組)
金鑰轉二進制後如下:
57

49

41

33

25

17

58

50

42

34

26

18

10

59

51

43

35

27

01000001(A - 08)
01000010(B - 16)
01000011(C - 24)
01000100(D - 32)

19

11

03

60

52

44

36

63

55

47

39

31

23

15

01000101(E - 40)
01000110(F - 48)
01000111(G - 56)
01001000(H - 64)

62

54

46

38

30

22

14

61

53

45

37

29

21

13

28

20

12

PC-1 表
共 8 組,1 組 7 位元
前 4 組稱 C[ I ]、後四組稱 D[ I ]

I值



1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

1

1

2

2

2

2

2

2

1

2

2

2

2

2

2

1

魂遊 Vitas0319
李易修

因金鑰(KEY)做第 1 次加密在這簡稱 ( K[1 ~ 16] ) 先做 K1 的左移動做,由上表查到需將 C[ I ]、D[ I ]同時往左移 1 位如下: ┌─ C[ i ] └─ ┌─ D[ i ] └─ 57 49 41 33 25 17 9 0 0 0 0 0 0 0 1 58 50 42 34 26 18 1 1 1 1 1 1 1 10 2 59 51 43 35 27 1 0 0 0 0 0 0 19 11 03 60 52 44 36 0 0 0 0 0 0 0 63 55 47 39 31 23 15 1 1 0 0 1 1 0 7 62 54 46 38 30 22 0 1 1 1 1 0 0 14 6 61 53 45 37 29 0 1 0 0 0 0 0 21 13 5 28 20 12 4 0 0 0 0 0 0 0 PC-1 表 I值為:1所以經表查詢需左移位數:1 (此表為左移過後) 0000000 1111111 1000000 0000000 1100110 0111100 0100000 0000000 魂遊 Vitas0319 李易修 製 .

照著 PC-2 表做置入動作: 14 17 11 24 1 5 1 0 1 0 0 0 3 28 15 6 21 10 0 0 1 0 0 1 23 19 12 4 26 8 0 0 1 0 0 1 0000000(7) 1111111(14) 16 7 27 20 13 2 1000000(21) 0000000(28) 1100110(35) 0 0 0 0 1 0 41 52 31 37 47 55 0 0 0 0 0 0 30 40 51 45 33 48 1 1 0 1 1 0 44 49 39 56 34 53 1 0 1 0 1 0 46 42 50 36 29 32 0 0 0 0 0 0 0111100(42) 0100000(49) 0000000(56) PC-2 表 共8組,1組6位元 K[ 1 ]答案為: 101000 001001 001001 000010 000000 110110 101010 000000 K[ 2 ]一樣直接經由 PC-1 排列後的 8 組,1 組 7 位元做往左位移 以此類推 魂遊 Vitas0319 李易修 製 .

08) 01001100(L .40) 01011001(Y .56) 01010101(U .32) 01000101(E .16) 01001111(O .金鑰加密本回合結束! 明碼加密: 01001001(I .64) 58 50 42 34 26 18 10 2 1 1 1 1 1 1 1 1 60 52 44 36 28 20 12 4 1 0 1 0 1 0 0 0 62 54 46 38 30 22 14 6 1 1 0 1 1 1 1 0 64 56 48 40 32 24 16 8 1 1 1 1 0 1 0 1 57 49 41 33 25 17 9 1 0 0 0 0 0 0 0 0 59 51 43 35 27 19 11 3 0 0 0 0 0 0 0 0 61 53 45 37 29 21 13 5 0 1 1 0 0 1 1 1 63 55 47 39 31 23 15 7 0 1 0 0 1 1 0 0 IP 表 共8組,1組8位元 前 4 組稱 L[ I ]、後四組稱 R[ I ] 魂遊 Vitas0319 李易修 製 .48) 01001111(O .24) 01010110(V .

1 ] ): 1R[ I ] 00000000(08) 00000000(16) 01100111(24) 01001100(32) 32 1 2 3 4 5 0 0 0 0 0 0 4 5 6 7 8 9 0 0 0 0 0 0 8 9 10 11 12 13 0 0 0 0 0 0 12 13 14 15 16 17 0 0 0 0 0 0 16 17 18 19 20 21 0 0 1 1 0 0 20 21 22 23 24 25 0 0 1 1 1 0 24 25 26 27 28 29 1 0 1 0 0 1 28 29 30 31 32 1 0 1 1 0 0 0 E表 共8組,1組 6 位元 將此8組與 K[ 1 ]的 8 組做 XOR 魂遊 Vitas0319 李易修 製 .將 R[ I ]置入 E 表 ( R[ I .

將 R[ I .1 ] 000000 K[ I ] 101000 B[ i ] 101000 000000 000000 000000 001100 001001 001001 000010 000000 001001 001001 000010 001100 XOR 001110 101001 011000 110110 101010 000000 = 111001 000011 011000 接下來將做查 S-BOX 表的動作 取每組的第 1 及第 6 位元做 10 進制轉換『查出該 S[ I ]表的列號 剩下中間 4 位元請將此 4 位元做 10 進制轉換『查出該 S[ I ]表的行號』 得到答案如下: B[ i ] [1]0100[0](S1) [0]0100[1](S2) [0]0100[1](S3) [0]0001[0](S4) [0]0110[0](S5) [1]1100[1](S6) [0]0001[1](S7) [0]1100[0](S8) S-BOX 13 15 3 13 11 6 0 5 將查出的碼轉為 2 進制並以 4 位元為單位 1101(4) 1111(8) 0011(12) 1101(16) 1011(20) 0110(24) 0000(28) 0101(32) 魂遊 Vitas0319 李易修 製 .1 ]與 K[ I ]做 XOR: R[ I .

S1 S2 S3 S4 S5 S6 S7 S8 b1 b6 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 14 0 4 15 15 3 0 13 10 13 13 1 7 13 10 3 2 14 4 11 12 10 9 4 4 13 1 6 13 1 7 2 4 15 1 12 1 13 14 8 0 7 6 10 13 8 6 15 12 11 2 8 1 15 14 3 11 0 4 11 2 15 11 1 13 7 14 8 8 4 7 10 9 0 4 13 14 11 9 0 4 2 1 12 10 4 15 2 2 11 11 13 8 13 4 14 1 4 8 2 14 7 11 1 14 9 9 0 3 5 0 6 1 12 11 7 15 2 5 12 14 7 13 8 4 8 1 7 2 14 13 4 6 15 10 3 6 3 8 6 0 6 12 10 7 4 10 1 9 7 2 9 15 4 12 1 6 10 9 4 15 2 6 9 11 2 4 15 3 4 15 9 6 15 11 1 10 7 13 14 2 12 8 5 0 9 3 4 15 3 12 10 11 13 2 1 3 8 13 4 15 6 3 8 9 0 7 13 11 13 7 2 6 9 12 15 8 1 7 10 11 7 14 8 8 1 11 7 4 14 1 2 5 10 0 7 10 3 13 8 6 1 8 13 8 5 3 10 13 10 14 7 1 4 2 13 3 10 15 5 9 12 5 11 1 2 11 4 1 4 15 9 8 5 15 6 0 6 7 11 13 14 10 9 10 12 0 15 10 6 12 11 7 0 8 6 13 8 1 15 2 7 1 4 5 0 9 15 13 1 0 14 12 3 15 5 9 5 6 12 6 12 9 3 2 1 12 7 12 5 2 14 8 2 3 5 3 15 12 0 3 13 4 1 9 5 6 0 3 6 10 9 12 11 7 14 13 10 6 12 7 14 12 3 5 12 14 11 15 10 5 9 4 14 10 7 7 12 8 15 14 11 13 0 5 9 3 10 12 6 9 0 11 12 5 11 11 1 5 12 13 3 6 10 14 0 1 6 5 2 0 14 5 0 15 3 9 5 10 0 0 9 3 5 4 11 10 5 12 10 2 7 0 9 3 4 7 11 13 0 10 15 5 2 0 14 3 5 0 3 5 6 5 11 2 14 2 15 14 2 4 14 8 2 14 8 0 5 5 3 11 8 6 8 9 3 12 9 5 6 7 8 0 13 10 5 15 9 8 1 7 12 5 9 4 14 9 6 4 3 11 8 6 13 1 6 2 12 7 2 8 11 魂遊 Vitas0319 李易修 製 .

Ki ) 1101(4) 1111(8) 0011(12) 1101(16) 1011(20) 0110(24) 0000(28) 0101(32) 16 7 20 21 1 1 1 0 29 12 28 17 0 1 0 1 1 15 23 26 1 0 1 0 5 18 31 10 1 0 0 0 2 8 24 14 1 1 0 1 32 27 3 9 1 0 0 0 19 13 30 6 1 1 1 1 22 11 4 25 0 1 1 0 P表 共 8 組,1 組 4 位元 得到 F[ 1 ] ( L[1] )為 1110(4) 0101(8) 1010(12) 1000(16) 1101(20) 1000(24) 1111(28) 0110(32) 魂遊 Vitas0319 李易修 製 .將轉為 2 進制的 8 組 32 位元置入 P 表 ( F(Ri-1.

將 F[ 1 ]原本的 1 組 4 位元轉成 8 位元並與 L[ 0 ]做 XOR L[ 0 ] 11111111 F[ 1 ] 11100101 10101000 11011000 11110110 XOR 10101000 11011110 11110101 R[ 1 ] = L0 + F( R0.K1 ) 00011010 = 00000000 00000110 00000011 而 R1=R0 一直做到 16 次後再將 L[ I ]及 R[ I ]合起來置入 IP-1 的表內 在此示範為加密過 1 次的結果: ┌─ 00000000(08) 00000000(16) 01100111(24) └─ 01001100(32) L1 ┌─ R1 └─ 00011010(40) 00000000(48) 00100110(56) 00000011(64) 魂遊 Vitas0319 李易修 製 .

40 8 48 16 56 24 64 32 0 0 0 0 0 1 1 0 39 7 47 15 55 23 63 31 1 0 0 0 1 1 1 0 38 6 46 14 54 22 62 30 0 0 0 0 1 1 0 1 37 5 45 13 53 21 61 29 1 0 0 0 0 0 0 1 36 4 44 12 52 20 60 28 1 0 0 0 0 0 0 0 35 3 43 11 51 19 59 27 0 0 0 0 1 1 0 0 34 2 42 10 50 18 58 26 0 0 0 0 0 1 0 1 33 1 41 9 4 17 57 25 0 0 0 0 0 0 0 0 P 表置入(經過 16 次加密後)最後一個步驟) 經排列過後再將各組轉換為 16 進制即可! 00000110 → 06 10001110 → 8E 00001101 → 0D 10000001 → 81 10000000 → 80 00001100 → 0C 00000101 → 05 00000000 → 00 DES 經過 1 層加密後結果為:068e0d81800c0500 魂遊 Vitas0319 李易修 製 .

附圖一: 附圖一: 魂遊 Vitas0319 李易修 製 .

附圖二: 附圖二: 魂遊 Vitas0319 李易修 製 .