DES算法详细介绍.docVIP

  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

DES算法详细介绍

图4-3给出了DES过程框图。假设输入的明文数据是64比特。首先经过初始置换IP后把其左半部分32比特记为L0,右半部分32比特记为R0,即成了置换后的输入;然后把R0与密钥产生器产生的子密钥k1进行运算,其结果计为f(R0,k1);再与L0进行摸2加得到L0eq\o\ac(○,+)f(R0,k1),把R0记为L1放在左边,而把L0eq\o\ac(○,+)f(R0,k1)记为R1放在右边,从而完成了第一轮迭代运算。在此基础上,重复上述的迭代过程,一直迭代至第16轮。所得的第16轮迭代结果左右不交换,即L15eq\o\ac(○,+)f(R15,k16)记为R16,放在左边,而R15记为L16放在右边,成为预输出,最后经过初始置换的逆置换IP-1运算后得到密文。

下面详细介绍DES加密过程中的基本运算:

DES中的初始置换IP与初始逆置换IP-1

表4-1给出了初始置换IP与初始逆置换IP-1。对于要加密的明文串64比特,初始置换IP把原来输入的第58位置换为第1位,原输入的第50位置换为第2位,……,把原输入的第7位置换为第64位,即最后一位。同样的初始置换是以预输出作为它的输入,该置换的输出以预输出块的第40位作为它的第1位,……,而以25位作为它的最后一位。

图4-3DES框图

表4-1初始置换IP与初始逆置换

(2)密码函数f

函数

f:{0,1}32?{0,1}48?{0,1}32

的输入是一个32比特串(当前状态的右半部)和子密钥。密钥编排方案由16个48比特的子密钥组成,这些子密钥由56比特的种子密钥k导出。每个ki都是由k置换选择而来(子密钥的产生过程将在后面详细说明)。

图4-4给出了函数f的示意图。它主要包含一个应用S盒的替代以及其后跟随的一个固定置换P。密码函数f是整个加密的关键部分,它包含了如下四种功能:

扩展函数E

扩展函数E的功能就是将一个32位的输入块扩展为48位的输出块,而这48位的输出块再分成8个6位的块。它是按照表4-2依次选择它所输入中的位而取得的。从表4-2可知,E(R)的前面3位是R的32,1,2位置上的值,而E(R)的最后2位是R的32,1位的值。

图4-4DES的f函数

模2加法

模2加功能就是将E(R)的各个位与密钥k的各位逐位作模2加,以得到输出bi,具体运算如下:

表4-2E比特选择表

32

1

2

3

4

5

4

5

6

7

8

9

8

9

10

11

12

13

12

13

14

15

16

17

16

17

18

19

20

21

20

21

22

23

24

25

24

25

26

27

28

29

28

29

30

31

32

1

S盒运算

在密码函数f(R,k)中有8个S盒,称为8个不同的选择函数,分别用表示,参见表4-3。每个S盒都是将6位作为输入,得到一个4位块作为输出。

以S1为例,若B是6位的一个块,则S1(B)计算如下:B的第一和最后一位表示从0到3之间的二进制数,令该数为i;而B的中间4位表示从0到15之间的二进制数,令该数为j;在该表S1中查第i行j列的数,它是从0到15之间的一个数,且唯一地由4位块代表,则该块就是输入B的S1的输出S1(B)例如对于输入为101000而言,行是10,即第2行。而列是由0100确定,即第5列,S1盒的第2行与第5列的交叉处即为B,因而输出为1101,因此1101就是S盒S1在输入为101000时的输出。

在f(R,k)的计算中,它将由模2加运算得到的按每6个一组共

分为8组,顺序记为它们分别经过8个选择函数Si运算变成即

S1(B1)S2(B2)…S8(B8)=

置换函数P

置换函数P是通过输入块的位,从32位输入中得到32位的输出。置换函数P由表4-4给出。由该表确定的函数P的输出P(C),是通过C的第16位为P(C)的第1位,取第7位为P(C)的第2位,……,取第25为P(C)的第32位。

表4-3S-盒

表4-4置换函数P

现在我们就令为8个不同的选择函数,P为置换函数,E为扩展函数。为了计算f(R,k),先规定每个为6位块,且

=keq\o\ac(○,+)E(R),

于是有

f(R,k)=

因此,在f(R,k)的计算中将keq\o\ac(○,+)E(R)分成8个块,即每块6位(即Bi),然后每个Bi取作Si的一个输入就得到每个都为4位的8个块Si(Bi)(i=1,2,…,8)的输出,再将此8块连接成32位的整块。这个整块就构成了P的输出,经P置换,即为f(R,k)的输出。

(3)子(轮

文档评论(0)

185****9651 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档