- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
DES算法详细介绍
1973年5月15日,美国国家标准局(现在美国国家标准技术研究所(NIST)在联邦注册报上发表一则启事,公开征集用来保护传输和静止存储中的计算机数据的密码算法,这一举措最终导致了数据加密标准DES的出现。DES采用分组乘积密码体制,它是由IBM开发,是对早期被称为Lucifer 密码体制的改进。DES在1975年3月17日首次在联邦记录中公布,而且声明对比算法征求意见。到1977年2月15日拟议中的DES被采纳为“非密级”应用的一个联邦标准。
最初预期DES作为一个标准只能使用10~15年,然而,出于种种原因,可能是DES还没有受到严重的威胁,事实证明了DES要长寿得多。在其被采用后,大约每隔5年被评审一次。DES的最后一次评审是在1999年1月。但是,随着计算机计算能力的提高,由于DES的密钥过短,仅有56位,对DES的成功攻击也屡见报端。例如:1999年1月,RSA数据安全公司宣布:该公司所发起的对56位DES的攻击已经由一个称为电子边境基金(EFF)的组织,通过互联网上的100000台计算机合作在22小时15分钟内完成。
在这种情况下,对于替代DES的要求日益增多。最终,NIST于1997年发布公告,征集新的数据加密标准作为联邦信息处理标准以代替DES。新的数据加密标准称为AES,关于AES的讨论将放在后面的4.5节。
尽管如此,DES的出现是现代密码学历史上非常重要的事件。它对于我们分析掌握分组密码的基本理论与设计原理仍然具有重要的意义。
DES算法描述
DES是一个16轮的Feistel型结构密码,它的分组长度为64比特,用一个56比特的密钥来加密一个64比特的明文串,输出一个64比特的密文串。其中,使用密钥为64比特,实用56比特,另8位用作奇偶校验。加密的过程是先对64位明文分组进行初始置换,然后分左、右两部分分别经过16轮迭代,然后再进行循环移位与变换,最后进行逆变换得出密文。加密与解密使用相同的密钥,因而它属于对称密码体制。
图4-3 DES框图
表 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-4 DES 的 f 函数
模2加法
模2加功能就是将E(R) 的各个位与密钥k的各位逐位作模2加,以得到输出bi , 具体运算如下:
表4-2 E 比特选择表
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-3 S-盒
表4-4 置
文档评论(0)