DES算法实现过程分析.docx
- 文档编号:28226635
- 上传时间:2023-07-09
- 格式:DOCX
- 页数:8
- 大小:17.03KB
DES算法实现过程分析.docx
《DES算法实现过程分析.docx》由会员分享,可在线阅读,更多相关《DES算法实现过程分析.docx(8页珍藏版)》请在冰豆网上搜索。
DES算法实现过程分析
DES算法实现过程分析
1. 处理密钥:
从用户处获得64位密钥.(每第8位为校验位,为使密钥有正确的奇偶校验,每个密钥要有奇数个”1”位.(本文如未特指,均指二进制位)
具体过程:
对密钥实施变换,使得变换以后的密钥的各个位与原密钥位对应关系如下表所示:
表一为忽略校验位以后情况
12 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 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].(共16次)。
每次循环左移位数
如下表所示:
循环次数 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
串联C[i],D[i],得到一个56位数,然后对此数作如下变换以产生48位子密钥K[i]。
变换过程
12 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 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
按以上方法计算出16个子密钥。
2.对64位数据块的处理:
2.1把数据分成64位的数据块,不够64位的以适当的方式填补。
2.2对数据块作变换。
bit goestobit bit goestobit
58157 33
50249 34
42341 35
34433 36
26525 37
18617 38
107 9 39
28 1 40
60959 41
52 1051 42
44 1143 43
36 1235 44
28 1327 45
20 1419 46
12 1511 47
416 3 48
62 1761 49
54 1853 50
46 1945 51
38 2037 52
30 2129 53
22 2221 54
14 2313 55
624 5 56
64 2563 57
56 2655 58
48 2747 59
40 2839 60
32 2931 61
24 3023 62
16 3115 63
832 7 64
2.3将变换后的数据块等分成前后两部分,前32位记为L[0],后32位记为R[0]。
2.4用16个子密钥对数据加密。
2.4.1根据下面的扩冲函数E,扩展32位的成48位
bit goestobit bit goestobit bit goestobit bit goestobit
321 8 1316 2524 37
12 9 1417 2625 38
2310 1518 2726 39
3411 1619 2827 40
4512 1720 2928 41
5613 1821 3029 42
4712 1920 3128 43
5813 2021 3229 44
6914 2122 3330 45
71015 2223 3431 46
81116 2324 3532 47
91217 2425 36 1 48
2.4.2用E{R[i-1]}与K[i]作异或运算。
2.4.3把所得的48位数分成8个6位数。
1-6位为B[1],7-12位为B,……43-48位为B。
2.4.4用S密箱里的值替换B[j]。
从j=1开始。
S密箱里的值为4位数,共8个S密箱
2.4.4.1取出B[j]的第1和第6位串联起来成一个2位数,记为m.。
m即是S密箱里用来替换
B[j]的数所在的列数。
2.4.4.2取出B[j]的第2至第5位串联起来成一个4位数,记为n。
n即是S密箱里用来替换
B[j]的数所在的行数。
2.4.4.3用S密箱里的值S[j][m][n]替换B[j]。
8个S密箱如下所示:
--------
S-BOXES1
Binary d1d6=> 00 01 10 11
“/d2..d5“/ Dec 0 1 2 3
00000 14 0 4 15
00011 4 15 1 12
00102 13 7 14 8
00113 1 4 8 2
01004 2 14 13 4
01015 15 2 6 9
01106 11 13 2 1
01117 8 1 11 7
10008 3 10 15 5
10019 10 6 12 11
101010 6 12 9 3
101111 12 11 7 14
110012 5 9 3 10
110113 9 5 10 0
111014 0 3 5 6
111115 7 8 0 13
--------
S-BOXES2
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 15 3 0 13
00011 1 13 14 8
00102 8 4 7 10
00113 14 7 11 1
01004 6 15 10 3
01015 11 2 4 15
01106 3 8 13 4
01117 4 14 1 2
10008 9 12 5 11
10019 7 0 8 6
101010 2 1 12 7
101111 13 10 6 12
110012 12 6 9 0
110113 0 9 3 5
111014 5 11 2 14
111115 10 5 15 9
--------
S-BOXES3
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 10 13 13 1
00011 0 7 6 10
00102 9 0 4 13
00113 14 9 9 0
01004 6 3 8 6
01015 3 4 15 9
01106 15 6 3 8
01117 5 10 0 7
10008 1 2 11 4
10019 13 8 1 15
101010 12 5 2 14
101111 7 14 12 3
110012 11 12 5 11
110113 4 11 10 5
111014 2 15 14 2
111115 8 1 7 12
--------
S-BOXES4
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 7 13 10 3
00011 13 8 6 15
00102 14 11 9 0
00113 3 5 0 6
01004 0 6 12 10
01015 6 15 11 1
01106 9 0 7 13
01117 10 3 13 8
10008 1 4 15 9
10019 2 7 1 4
101010 8 2 3 5
101111 5 12 14 11
110012 11 1 5 12
110113 12 10 2 7
111014 4 14 8 2
111115 15 9 4 14
--------
S-BOXES5
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 2 14 4 11
00011 12 11 2 8
00102 4 2 1 12
00113 1 12 11 7
01004 7 4 10 1
01015 10 7 13 14
01106 11 13 7 2
01117 6 1 8 13
10008 8 5 15 6
10019 5 0 9 15
101010 3 15 12 0
101111 15 10 5 9
110012 13 3 6 10
110113 0 9 3 4
111014 14 8 0 5
111115 9 6 14 3
--------
S-BOXES6
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 12 10 9 4
00011 1 15 14 3
00102 10 4 15 2
00113 15 2 5 12
01004 9 7 2 9
01015 2 12 8 5
01106 6 9 12 15
01117 8 5 3 10
10008 0 6 7 11
10019 13 1 0 14
101010 3 13 4 1
101111 4 14 10 7
110012 14 0 1 6
110113 7 11 13 0
111014 5 3 11 8
111115 11 8 6 13
--------
S-BOXES7
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 4 13 1 6
00011 11 0 4 11
00102 2 11 11 13
00113 14 7 13 8
01004 15 4 12 1
01015 0 9 3 4
01106 8 1 7 10
01117 13 10 14 7
10008 3 14 10 9
10019 12 3 15 5
101010 9 5 6 0
101111 7 12 8 15
110012 5 2 0 14
110113 10 15 5 2
111014 6 8 9 3
111115 1 6 2 12
--------
S-BOXES8
binary d1d6=> 00 01 10 11
“/d2..d5“/ dec 0 1 2 3
00000 13 1 7 2
00011 2 15 11 1
00102 8 13 4 14
00113 4 8 1 7
01004 6 10 9 4
01015 15 3 12 10
01106 11 7 14 8
01117 1 4 2 13
10008 10 12 0 15
10019 9 5 6 12
101010 3 6 10 9
101111 14 11 13 0
110012 5 0 15 3
110113 0 14 3 5
111014 12 9 5 6
111115 7 2 8 11
2.4.4.4返回2.4.4.1直至8个数据块都被替换。
2.4.5把B[1]至B顺序串联起来得到一个32位数。
对这个数做如下变换:
bit goestobit bit goestobit
16 1 2 17
72 8 18
20 3 24 19
21 4 14 20
29 5 32 21
12 6 27 22
28 7 3 23
17 8 9 24
19 19 25
15 10 13 26
23 11 30 27
26 12 6 28
5 13 22 29
18 14 11 30
31 15 4 31
10 16 25 32
2.4.6把得到的结果与L[i-1]作异或运算。
把计算结果赋给R[i]。
2.4.7把R[i-1]的值赋给L[i]。
2.4.8从2.4.1循环执行,直到K[16]也被用到。
2.5把R[16]和L[16]顺序串联起来得到一个64位数。
对这个数实施2.2变换的逆变换。
以上就是DES算法如何加密一段64位数据块。
解密时用同样的过程,只需把16个子密钥的
顺续颠倒过来,应用的顺序为K[16],K[15],K[14]。
。
。
。
K[1]。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DES 算法 实现 过程 分析