文档详情

数据加密准确DES.doc

发布:2017-03-10约5.03千字共16页下载文档
文本预览下载声明
数据加密标准DES 1977年1月,美国政府将IBM研制的一种乘积密码宣布为国家的数据加密标准。这个标准的确立刺激了很大一批厂商去实现加密算法的硬件化,以提高处理速度。这种密码术的核心是乘积变换,在硬件产业中常常简称为 DES(Data Encryption Standard)。这样一来,由于可以得到便宜高速的硬件,所以反过来也鼓励了许多其他用户采纳DES。 1.DES算法描述 现在我们来说明DES算法,它的过程如图9-2所示。对明文按64位分组,每组明文经初始排列(第1步),通过子密钥K1--K16进行16次乘积变换(第2步),再通过最终排列(第3步)得到64位密文。 图9-2 DES算法过程图 16次乘积变换的目的是使明文增大其混乱性和扩散性,使得输出不残存统计规律,使破译者不能从反向推算出密钥。 第1步:初始排列(IP) IP(Initial Permutation)取排数据的方法如表9-2所示,其中的数据表示明文的位标(1~64)。例如,58指该组明文中的第58位,50指该组明文中的第50位,其他类推。第l步初始排列的目的是将明文的顺序打乱。 表9-2 初始排列法(IP) [例12-1]明文X=0123456789ABCDEF(十六进制形式),写成二进制形式,共64位: X=0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111经过初始排列(IP)后,结果变成: 1100 1100 0000 0000 1100 1100 1111 1111 1111 0000 1010 1010 1111 0000 1010 1010即 写成十六进制形式是:CC00CCFFFOAAFOAA。 第2步:乘积变换 把通过第1步得出的64位一分为二,用L0表示前32位,R0表示后32位,那么在上例中有: L0=CC00CCFF R0=FOAAFOAA 其16次乘积变换的过程可以用图9-3表示。其中K1~K16为16次变换所采用的密钥。每一个密码函数 f(Ri-1,Ki)(i= 1,…,16)都是通过3个子过程(扩展置换,压缩代换,P排列)得到的。由于16次变换过程是类似的,我们只要对其中的一个展开讨论就行了。在上面的例子中,我们不妨看一下i=1(第1次变换)的情况。其具体过程如图9-4所示。 图9-3 16乘积变换过程 (1)扩展置换 扩展置换又称E(Expand)函数,是一个与密钥无关的纯移位变换,它把32位扩展成48位。将32位分成4位一组,共8组,记作a 1(1)…a4(1), a1(2)…a4(2),…a1(8)…a4(8) 。 每组扩展成6位,共48位,记作b1(1)…b6(1), b1(2)…b6(2),…b1(8)…b6(8) 。其扩展公式可以表示成: 当j=l时,有bl(1)=a4(8),j=8时有b6(8)=a1(1), 也就是: 图9-4?? 第1次变换的过程 [例12-1]中,R0=F0AAF0AA,经过扩展置换就变成了: 把扩展置换的结果与子密钥进行异或,16个子密钥的顺序是 第i次变换用子密钥Ki。我们不妨先假设子密钥K1=0B02679B49A5,则7A15557A1555 0B02679B49A5=711732E15CF0。 (2)压缩替换 压缩替换也称压缩编码(compressed encoding),通过压缩替换将输入的48位变换为32位输出,其主要方法是利用替换盒(substitution box),简称S盒。 S盒是指这样的函数,它把6个输入位映射为4个输出位。作为一个密码表,它是由0~15组成的4行16列的随机数表,此密码表就是S盒。一个S盒中有4个替换表(行编号为0,1,2,3)。因为48位分成6位一组,共分8组,故应有8个不同的S盒,记为S1,S2 ,…,S8,它们的构成见表9-3。 表9-3? S盒的构成 我们以Sl为例来看一看如何由6位生成4位。把输入6位中的头尾两位合起来构成的两位二进制数表示行数,中间4位二进制数表示列数,在S1盒中查找对应的数,该数化成二进制形式就是输出的4位。如果输入为101100,那么 在Sl中查到2行6列所对应的数为2,即0010,故其输出的4位为0010,可写成 或写成 。 整个压缩替换可用图9-5表示。 图9-5 压缩替换 前面的例子经第1子过程后,得711732E15CF0H(48位),分成011100,010001,011100,110010,111000,010101,110011和110000 8个组,经压缩替换后得到: 即经压缩替换的结果是用十六进制表示的0C216D50,或32位二进制。 (3)
显示全部
相似文档