数据加密标准DES

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据加密标准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(R i-1,K i)(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时,有b l(1)=a4(8),j=8时有b6(8)=a1(1),

也就是:

图9-4 第1次变换的过程[例12-1]中,R0=F0AAF0AA,经过扩展置换就变成了:

把扩展置换的结果与子密钥进行异或,16个子密钥的顺序是

第i次变换用子密钥K i。我们不妨先假设子密钥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盒的构成

我们以S l为例来看一看如何由6位生成4位。把输入6位中的头尾两位合起来构成的两位二进制数表示行数,中间4位二进制数表示列数,在S1盒中查找对应的数,该数化成二进制形式就是输出的4位。如果输入为101100,那么

在S l中查到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)P排列

P排列也称换位表变换,将压缩替换后得到的32位按表9-4所示顺序重新排列的32位,即密码函数。

表9-4 P排列

在前面的例子中,经压缩替换后的32位是:

0000 1100 0010 0001 0110 1101 0101 0000

即有:

故。最后,

得到L l、R l后,再重复上述乘积变换(共16次),得L16、R16组成64位。

第3步:最终排列

它是初始排列的逆变换,即(IP)-1,其排列顺序可用表9-5示意。联合R16L16,共64位,经(IP)-1操作后就能得到该组的密文。

表9-5 (IP)-1

2.DES算法密钥的生成过程

取64位作为初始密钥(或称主密钥),每8位中有1位奇偶检验位,故主密钥实质上只有56位,经过排列选择1,简称PC-1(PC是permutation choose的缩写),分成C0和D0两部分,各28位。将C0、D0各循环左移1位得到C 1、D1,再经过排列选择2(PC-2)得到了密钥K1;对C1、D1;作循环左移位后得到C2、D2,经过PC-2得到子密钥K2;……直到产生子密钥K16,其过程如图9-6所示。

相关文档
最新文档