第二章:对称密码学
换过程,因此算法认为只有持有加密所用的密钥的用户才能解密密文。密钥表面上是64位的,然而只有其中的56位被实际用于算法,其余8位被用于奇偶校验,并在算法中被丢弃。因此,DES的有效密钥长度为56位,通常称DES的密钥长度为56位。
与其它分组密码相似,DES自身并不是加密的实用手段,而必须以某种工作模式进行实际操作。FIPS-81确定了DES使用的几种模式[3]。
2.3.3
DES算法的描述
DES加密算法如图2-13所示。
64比特明文输入 IP
39
第二章:对称密码学
40
32-bit L0 32-bit R0 K1(56)
f L1=R0 R1=L0○+f(R0,K1) K2(56)
f L2=R1 R2=L1○+f(R1,K2) L15=R14 R15=L14○+f(R14,K15) f K16(56)R16=L15○+f(R15,K16) L16=R15 IP-1
第二章:对称密码学
? 初始置换函数IP
64比特密文输出 图2-13 DES加密算法
DES对64位明文分组进行操作。首先64位明文分组x经过一个初始置换函数IP,产生64位的输出x0,再将分组x0分成左半部分L0和右半部分R0。即:
x0=IP(x)=L0R0。
置换表如表2.1。此表顺序为从上到下,从左至右。如初始置换把明文的第58位换至第1位的位置,把第50位换至第二位。以此类推。
表2.1 初始置换IP 55432112 8 0 2 4 6 8 0 65432214 0 2 4 6 8 0 2 65433216 2 4 6 8 0 2 4 65443218 4 6 8 0 2 4 6 5443219 1 7 9 1 3 5 7 55432113 9 1 3 5 7 9 1 65432215 1 3 5 7 9 1 3 65433217 3 5 7 9 1 3 5
41
第二章:对称密码学
? 获取子密钥Ki
DES加密算法的密钥长度为56位,但一般表示为64位,其中每个第8位用于奇偶校验。在DES加密算法中,要利用用户提供的64位初始密钥经过一系列的处理得到K1,K2,……,K16,分别作为1?16轮运算的16个子密钥。现在来看如何获得这16个子密钥。
首先,将64位密钥去掉8个校验位,用密钥置换PC-1置换剩下的56位密钥;再将56位分成前28位C0和后28位D0。即:PC-1(K56)=C0D0。密钥置换PC-1如表2.2所示:
表2.2 密钥置换PC-1 5443219 7 9 1 3 6 7 1 5543218 0 2 4 6 8 12 554320 9 1 3 5 7 113 65439 1 0 2 4 6 65433213 5 7 9 1 3 5 7 6543322 4 6 8 0 2 16 654324 1 3 5 7 9 215 2214 1 3 8 0 2
接下来,根据轮数这两部分分别循环左移1位或2位。具体每轮移位的位数见表2.3:
42