DES算法实现过程分析 DES算法实现过程分析 DES算法实现过程分析1. 处理密钥:
1.1 从用户处获得64位密钥.(每第8位为校验位,为使密钥有正确的奇偶校验,每个密钥要有奇数个”1”位.(本文如未特指,均指二进制位)
1.2 具体过程:
1.2.1 对密钥实施变换,使得变换以后的密钥的各个位与原密钥位对应关系如下表所示:
表一为忽略校验位以后情况 20 21 22 23 24 25 26 27 2843 35 27 19 11 3 60 52 44 36 46 47 48 49 50 51 52 53 54 55 56 53 45 37 29 21 13 5 28 20 12 4
1.2.2 把变换后的密钥等分成两部分,前28位记为C[0], 后28位记为D[0].
1.2.3 计算子密钥(共16个), 从i=1开始。
1.2.3.1 分别对C[i-1],D[i-1]作循环左移来生成C[i],D[i].(共16次)。每次循环左移位数
如下表所示:
左移位数 1 1 2 2 2 2 2 2 1 2 2 2 2 2 2 1
1.2.3.2 串联C[i],D[i],得到一个56位数,然后对此数作如下变换以产生48位子密钥K[i]。
变换过程如下:
17 18 19 20 21 22 23 24 4 26 8 16 7 27 20 13 2 40 41 42 43 44 45 46 47 4839 56 34 53 46 42 50 36 29 32
1.2.3.3 按以上方法计算出16个子密钥。
2.对64位数据块的处理:
2.1 把数据分成64位的数据块,不够64位的以适当的方式填补。
2.2对数据块作变换。
bit goes to bit bit goes to bit
581 57 33
502 49 34
423 41 35
344 33 36
265 25 37
186 17 38
107 9 39
2 8 1 40
609 59 41
52 10 51 42
44 11 43 43
36 12 35 4420 14 19 46
12 15 11 47
416 3 48
62 17 61 49
54 18