欢迎来到天天文库
浏览记录
ID:38700695
大小:382.50 KB
页数:16页
时间:2019-06-17
《数据加密标准DES》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、数据加密标准DES1977年1月,美国政府将IBM研制的一种乘积密码宣布为国家的数据加密标准。这个标准的确立刺激了很大一批厂商去实现加密算法的硬件化,以提高处理速度。这种密码术的核心是乘积变换,在硬件产业中常常简称为DES(DataEncryptionStandard)。这样一来,由于可以得到便宜高速的硬件,所以反过来也鼓励了许多其他用户采纳DES。1.DES算法描述现在我们来说明DES算法,它的过程如图9-2所示。对明文按64位分组,每组明文经初始排列(第1步),通过子密钥K1--K16进行16次乘积变换(第2步
2、),再通过最终排列(第3步)得到64位密文。图9-2DES算法过程图16次乘积变换的目的是使明文增大其混乱性和扩散性,使得输出不残存统计规律,使破译者不能从反向推算出密钥。第1步:初始排列(IP)IP(InitialPermutation)取排数据的方法如表9-2所示,其中的数据表示明文的位标(1~64)。例如,58指该组明文中的第58位,50指该组明文中的第50位,其他类推。第l步初始排列的目的是将明文的顺序打乱。表9-2初始排列法(IP)[例12-1]明文X=0123456789ABCDEF(十六进制形式),写
3、成二进制形式,共64位:X=0000000100100011010001010110011110001001101010111100110111101111经过初始排列(IP)后,结果变成:1100110000000000110011001111111111110000101010101111000010101010即写成十六进制形式是:CC00CCFFFOAAFOAA。第2步:乘积变换把通过第1步得出的64位一分为二,用L0表示前32位,R0表示后32位,那么在上例中有:L0=CC00CCFFR0=FOAAFOA
4、A其16次乘积变换的过程可以用图9-3表示。其中K1~K16为16次变换所采用的密钥。每一个密码函数f(Ri-1,Ki)(i=1,…,16)都是通过3个子过程(扩展置换,压缩代换,P排列)得到的。由于16次变换过程是类似的,我们只要对其中的一个展开讨论就行了。在上面的例子中,我们不妨看一下i=1(第1次变换)的情况。其具体过程如图9-4所示。图9-316乘积变换过程(1)扩展置换扩展置换又称E(Expand)函数,是一个与密钥无关的纯移位变换,它把32位扩展成48位。将32位分成4位一组,共8组,记作a1(1)…a
5、4(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,则7A15557A15550B0
6、2679B49A5=711732E15CF0。(2)压缩替换压缩替换也称压缩编码(compressedencoding),通过压缩替换将输入的48位变换为32位输出,其主要方法是利用替换盒(substitutionbox),简称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
7、-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,110
8、011和1100008个组,经压缩替换后得到:即经压缩替换的结果是用十六进制表示的0C216D50,或32位二进制。(3)P排列P排列也称换位表变换,将压缩替换后得到的32位按表9-4所示顺序重新排列的32位,即密码函数。表9-4P排列在前面的例子中,经压缩替换后的32位是:00001100001000010110110101010000即有:故。最后,得到
此文档下载收益归作者所有