- 相關(guān)推薦
DES算法實(shí)現(xiàn)過程分析
1. 處理密鑰:1.1 從用戶處獲得64位密鑰.(每第8位為校驗(yàn)位,為使密鑰有正確的奇偶校驗(yàn),每個(gè)密鑰要有奇 數(shù)個(gè)”1”位.(本文如未特指,均指二進(jìn)制位)
1.2 具體過程:
1.2.1 對(duì)密鑰實(shí)施變換,使得變換以后的密鑰的各個(gè)位與原密鑰位對(duì)應(yīng)關(guān)系如下表所示:
表一為忽略校驗(yàn)位以后情況
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
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
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
63 55 47 39 31 23 15 7 62 54 46 38 30 22 14 6 61
&nbs
p;53 45 37 29 21 13 5 28 20 12 4
1.2.2 把變換后的密鑰等分成兩部分,前28位記為C[0], 后28位記為D[0].
1.2.3 計(jì)算子密鑰(共16個(gè)), 從i=1開始。
1.2.3.1 分別對(duì)C[i-1],D[i-1]作循環(huán)左移來生成C[i],D[i].(共16次)。每次循環(huán)左移位數(shù)
如下表所示:
循環(huán)次數(shù) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
左移位數(shù) 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
1.2.3.2 串聯(lián)C[i],D[i],得到一個(gè)56位數(shù),然后對(duì)此數(shù)作如下變換以產(chǎn)生48位子密鑰K[i]。
變換過程如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
17 18 19 20 21 22 23 24
14 17 11 24 1 5 3 28 15 6 21 10 23 19 12
4 26 8 16 7 27 20 13 2
25 26 27 28 29 30 31 &nbs
p; 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48
41 52 31 37 47 55 30 40 51 45 33 48 44 49
39 56 34 53 46 42 50 36 29 32
1.2.3.3 按以上方法計(jì)算出16個(gè)子密鑰。
2.對(duì)64位數(shù)據(jù)塊的處理:
2.1 把數(shù)據(jù)分成64位的數(shù)據(jù)塊,不夠64位的以適當(dāng)?shù)姆绞教钛a(bǔ)。
2.2對(duì)數(shù)據(jù)塊作變換。
bit goes to bit bit goes to bit
58 1 57 33
50 2 49 34
42 3 41 35
34 4 33 36
26 5 25 37
18 6 17 38
10 7 9 39
2 8 1 40
60 9 59 41
52 10 51 42
44 11 43
43
36 12 35 44
28 13 27 45
20 14 19 46
12 15 11 47
4 16 3 48
62 17 61 49
54 18 53 50
46 19 45 51
38 20 37 52
30 21 29 53
22 22 21 54
14 23 13 55
6 24 5 56
64 25 63 57
56 26 55 58
48 27 47 59
40 28 39 60
32 29 31 61
24 30 23 62
16 31
15 63
8 32 7 64
2.3 將變換后的數(shù)據(jù)塊等分成前后兩部分,前32位記為L(zhǎng)[0],后32位記為R[0]。
2.4 用16個(gè)子密鑰對(duì)數(shù)據(jù)加密。
2.4.1 根據(jù)下面的擴(kuò)沖函數(shù)E,擴(kuò)展32位的成48位
bit goes to bit bit goes to bit bit goes to bit bit goes to bit
32 1 8 13 16 25 24 37
1 2 9 14 17 26 25 38
2 3 10 15 18 27 26 39
3 4 11 16 19 28 27 40
4 5 12 17 20 29 28 41
5 6 13 18 21 30 29 42
4 7  
; 12 19 20 31 28 43
5 8 13 20 21 32 29 44
6 9 14 21 22 33 30 45
7 10 15 22 23 34 31 46
8 11 16 23 24 35 32 47
9 12 17 24 25 36 1 48
2.4.2 用E{R[i-1]}與K[i]作異或運(yùn)算。
2.4.3 把所得的48位數(shù)分成8個(gè)6位數(shù)。1-6位為B[1],7-12位為B[2],……43-48位為B[8]。
2.4.4 用S密箱里的值替換B[j]。從j=1開始。S密箱里的值為4位數(shù),共8個(gè)S密箱
2.4.4.1 取出B[j]的第1和第6位串聯(lián)起來成一個(gè)2位數(shù),記為m.。m即是S密箱里用來替換
B[j]的數(shù)所在的列數(shù)。
2.4.4.2 取出B[j]的第2至第5位串聯(lián)起來成一個(gè)4位數(shù),記為n。n即是S密箱里用來替換
B[j]的數(shù)所在的行數(shù)。
2.4.4.3 用S密箱里的值S[j][ m][ n]替換B[j]。8個(gè)S密箱如下所示:
--------
S-BOXES1
Binary d1d6 => 00 01 10 11
\/ d2..d5 \/ Dec 0 1 
; 2 3
0000 0 14 0 4 15
0001 1 4 15 1 12
0010 2 13 7 14 8
0011 3 1 4 8 2
0100 4 2 14 13 4
0101 5 15 2 6 9
0110 6 11 13 2 1
0111 7 8 1 11 7
1000 8 3 10 15 5
1001 9 10 6 12 11
1010 10 6 12 9 3
1011 11 12 11 7 14
1100 12 5 9 3 10
1101 13 9 5 10 0
1110 14 0 3 5 6
1111
15 7 8 0 13
--------
S-BOXES2
binary d1d6 => 00 01 10 11
\/ d2..d5 \/ dec 0 1 2 3
0000 0 15 3 0 13
0001 1 1 13 14 8
0010 2 8 4 7 10
0011 3 14 7 11 1
0100 4 6 15 10 3
0101 5 11 2 4 15
0110 6 3 8 13 4
0111 7 4 14 1 2
1000 8 9 12 5 11
1001 9 7 0 8 6
1010 10 2 1 12 7
1011 11 13 10 6 12
1100 12 12
6 9 0
1101 13 0 9 3 5
1110 14 5 11 2 14
1111 15 10 5 15 9
--------
S-BOXES3
binary d1d6 => 00 01 10 11
\/ d2..d5 \/ dec 0 1 2 3
0000 0 10 13 13 1
0001 1 0 7 6 10
0010 2 9 0 4 13
0011 3 14 9 9 0
0100 4 6 3 8 6
0101 5 3 4 15 9
0110 6 15 6 3 8
0111 7 5 10 0 7
1000 8 1 2 11 4
1001 9 13 8 1 &
nbsp; 15
1010 10 12 5 2 14
1011 11 7 14 12 3
1100 12 11 12 5 11
1101 13 4 11 10 5
1110 14 2 15 14 2
1111 15 8 1 7 12
--------
S-BOXES4
binary d1d6 => 00 01 10 11
\/ d2..d5 \/ dec 0 1 2 3
0000 0 7 13 10 3
0001 1 13 8 6 15
0010 2 14 11 9 0
0011 3 3 5 0 6
0100 4 0 6 12 10
0101 5 6 15 11 1
0110 6 9 0 7 13
0111 7
【DES算法實(shí)現(xiàn)過程分析】相關(guān)文章:
3-DES算法的FPGA高速實(shí)現(xiàn)08-06
計(jì)算法簡(jiǎn)單實(shí)現(xiàn)crc校驗(yàn)08-06
固定幾何結(jié)構(gòu)的FFT算法及其FPGA實(shí)現(xiàn)08-06
在DSP處理器上并行實(shí)現(xiàn)ATR算法08-06
GPS定位數(shù)據(jù)壓縮算法的設(shè)計(jì)與實(shí)現(xiàn)08-06
對(duì)我國《預(yù)算法》的分析及改革建議08-11
數(shù)字簽名算法SHA-1的FPGA高速實(shí)現(xiàn)08-06