DES课程设计技术报告.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络安全 课 程 设 计 报 告 学 院: 计算机与电子信息学院 专业名称: 学 号: 姓 名: 指导教师: 时 间: 2015年1月 DES源代码分析 一、DES对称加密算法简介 最著名的保密密钥或对称密钥加密算法DES(Data Encryption Standard)是由IBM公司在70年代发展起来的,并经过政府的加密标准筛选后,于1976年11月被美国政府采用,DES随后被美国国家标准局和美国国家标准协会(American National Standard Institute, ANSI) 承认。 DES使用56位密钥对64位的数据块进行加密,并对64位的数据块进行16轮编码。与每轮编码时,一个48位的“每轮”密钥值由56位的完整密钥得出来。DES用软件进行解码需要用很长时间,而用硬件解码速度非常快,但幸运的是当时大多数黑客并没有足够的设备制造出这种硬件设备。在1977年,人们估计要耗资两千万美元才能建成一个专门计算机用于DES的解密,而且需要12个小时的破解才能得到结果。所以,当时DES被认为是一种十分强壮的加密方法。 二、DES对称加密算法分析 (1)DES算法原理 在DES算法中有Data、Key、Mode三个参数。其中Data代表需要加密或解密的数据,由8字节64位组成;Key代表加密或解密的密钥,也由8字节64位组成;Mode代表加密或解密的状态。 在DES算法中加密和解密的原理是一样的,只是因为Mode的状态不同,适用密钥的顺序不同而已。 (2)DES算法的加密过程 DES算法的加密过程如图6.2所示。 初始置换(Initial Permutation,IP)是对输入的64位数据按照规定的矩阵改变数据位的排列顺序的换位变换,此过程与密钥无关。 子密钥生成是由64位外部输入密钥通过置换和移位操作生成加密和解密所需的16组(每组56位)子密钥的过程。 乘积变换过程非常复杂,是加密过程的关键。该过程通过16轮重复的替代、移位、异或和置换操作打乱原输入数据。 逆初始置换(IP-1)与初始置换过程相同,只是置换矩阵是初始置换的逆矩阵。 ① 初始置换(IP) 将64位明文按照初始置换表(如表6.1)的规则进行置换。其置换过程为:将输入明文的第58位置换到第1位,第50位置换到第2位,第12位置换到第3位,依此类推,……,最后第7位置换到第64位。 ② 子密钥生成 输入的密钥K是64位数据,但其中第8、16、24、32、40、48、56、64位用于奇偶校验,实际使用的密钥位只有56位。子密钥Ki的生成流程如图6.3所示。 第1步:PC1变换。将56位密钥按置换选择1(PC-1)的规律(见表6.2)进行置换,变换后分为左右两路(C0、D0)各28位。 第2步:数据左移。将两个28位的C0和D0按表6.3的规则进行循环左移。表6.3中第1行表示迭代轮次,第2行表示左移的位数。左移的规律是将C0和D0所有的位按表中规定的位数循环左移。 第3步:PC2变换和子密钥生成。C0和D0左移1位后得到C1和D1 ,再将C1和D1数据组合后(56位)按照PC2变换的要求变换得到48位的子密钥K1,在进行第1轮迭代时使用K1;同理,将C1和D1左移1位得到C2和D2,再将C2和D2数据组合后按照PC2变换的要求变换得到48位的子密钥K2;……;依此类推,就可以得到K3、K4…..K16。PC2变换如表6.4所示。PC2变换是将输入的56位数据变换为48位输出,该变换是一种压缩变换。 根据不同轮数分别进行左移和压缩变换,分别得到16个48位的子密钥K1, K2,…, K16。 ③ 乘积变换 初始置换后的数据分为各32位的两部分,左部分为L0,右部分为R0,这样,L0 = D58D50D12….D8,R0 = D57D49D41…D7。乘积变换过程就是将L0和R0按照乘积变换运算公式进行迭代运算,最后得出L16和R16。如图6.4所示。 第1步:E变换。E变换是一个扩展变换,其过程是将32位的数据Ri-1变换成48位,变换规则如表6.5所示。 第2步:异或变换。将E变换输出的48位数据与48位的子密钥Ki进行异或运算,得到48位的S盒数据。 第3步:S盒变换。将48位的S盒数据均分为8部分,每部分为6位,用8个S盒S1~S8表示。每个S盒的输入为6位,变换后输出为4位,即经过8个S盒S1~S8变换后输出为32位,如图6.5所示。 S盒的变换规则:以S1盒为例,将6位输入数据(a1a2a3a4a5a6)的中间4位(a2a3a4a5)对应的数值作为列,两端的2位(a1a6) 对应的数值作为行,找到如表6.6所示的S1转换表中相应的位,得到的数值再转换成二进制形式的4位数据,此即为S1盒的输出。 第4步:

文档评论(0)

我是兰花草 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档