DES 加密算法总结
2006-04-11 李亚楠
数据加密标准 DES(Data Encryption Standard)为 IBM 公司设计的数据加密方案,
与 1971 年 1 月被美国政府采用为非机密数据的数据加密标准。它具有以下特点:
1、 具有相当高的复杂性,使得破译的开销超过可能获得利益,同时又要便于理解和
掌握。
2、 DES 密码体制的安全性应该不依赖于算法的保密,其安全性仅以加密密钥的保密
为基础。
3、 实现经济,运行有效,并使用于多种不同的应用
DES 算法的入口参数有三个:Key、Data、Mode。其中 Key 为 8 个字节共 64 位,是 DES
算法的工作密钥,Data 也为 8 个字节 64 位,是要被加密或解密的数据,Mode 为 DES 的工作
方式,有两种:加密或者解密。
DES 算法是这样工作的,若 Mode 为加密,则用 Key 去把数据 Data 进行加密,生成的
Data 的密码形式(64 位)作为 DES 的输出;若 Mode 为解密,则用 Key 去把密码形式的数据
Data 解密,还原位 Data 的明码形式(64 位)作为 DES 的输出结果,在通信网络的两端,双方
约定一致的 Key,在通信的端点用 Key 对核心数据进行 DES 加密,然后以密码的形式在公共
通信网中传输到通信网络的终点,用同样的 Key 对密码数据进行解密。这样,便满足核心数据
在公共通信网中传输的安全性和可靠性。
通过定期在通信网络的源端和目的端同时改用新的 Key,便能更进一步提高数据的保密性。
DES 算法把 64 位的明文输入块变为 64 位的密文输出块,它使用的密钥也是 64 位,其算
法分为 3 个步骤:
1.初始置换
其功能是把输入的64位数据块按位重新组合,并把输出分为L0、R0两部分,每
部分各长3 2位,其置换规则为将输入的第58位换到第一位,第50位换到第2位等等
依此类推,最后一位是原来的第7位。L0、R0则是换位输出后的两部分,L0是输出的
左32位,R0是右32位,例:设置换前的输入值为D1D2D3……。D64,则经过初始
置换后的结果为:L0=D58D50……D8;R0=D57D49……D7。
初始置换规则见下表:
58,50,12,34,26,18,10,2,60,52,44,36,28,20,12,4,
62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,
57,49,41,33,25,17, 9,1,59,51,43,35,27,19,11,3,
61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7,
2、16 次迭代运算
① 变换密钥:
取得 56 位密钥,每个第 8 位为奇偶校验,舍弃奇偶校验位变成 56 位的密钥,按照
如下置换规则置换:
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
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]。