一、算法实现(转自绿色兵团)
1. 处理密钥:
1.1 从用户处获得64位密钥.(每第8位为校验位,为使密钥有正确的奇偶校验,每
个密钥要有奇
数个”1”位.(本文如未特指,均指二进制位)
1.2 具体过程:
1.2.1 对密钥实施变换,使得变换以后的密钥的各个位与原密钥位对应关系如
下表所示:
表一为忽略校验位以后情况
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 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 2 3 4 5 6 7 8 9 10 11 1
2 13 14 15 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]。
变换过程如下:
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