网站大量收购独家精品文档,联系QQ:2885784924

DES加密算法实现报告四川大学.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DES加密算法实现报告四川大学

四 川 大 学 计 算 机 学 院 实 验 报 告 学号: 姓名: 班级: 第 试验 课程名称 信息安全课程设计 实验课时 2 实验项目 DES加密算法的实现 实验时间 2013.04.28 实验目的 加深对分组密码原理的理解 对经典DES加密算法加密过程的理解 实验环境 Windows 8 eclipse 实验内容(算法、程序、步骤和方法) 一 试验原理 DES的特点是:一个对称密钥体制,加密盒解密使用同一秘钥、同一算法,区别是:加密子密钥顺序:k1,k2,.....k16,解密子密钥顺序k16,k15,...k2,k1。它在具体算法中属于分组乘法密码,使用56位的密钥对64位的明文进行加解密,获取密文为64位。其中密钥总长度实际为64位,另外八位作为奇偶校验位。 1.1 DES算法描述 DES体制简化示意图如图1.1所示,整个过程由三个阶段来完成: 设m=m1m2.....m64为64位待加密明文,其中mi∈{0,1},1≤i≤64, DES先执行初始置换IP来对m进行换位处理:然后通过子密钥k1~k16进行16次乘积变换,即进行16次迭代处理; 最终经过逆初始值换IP -1 的处理,得到64位密文:C=c1c2c3.......c64, 图1.1 DES简化示意图 其中ci∈{0,1},1≤ i ≤ 64. 16轮迭代目的是使明文增加混乱性和扩散性。避免输出密文残留统计规律,使得破译者无法反向推算出密钥。 第一步:初始置换IP 初始置换IP如图1—2所示,主要用于对明文m中的各位进行换位,目的在于打乱明文m中各位的排列次序。经过初始置换后,m的映射为m→IP→m’ 。 初始置换IP 逆初始换位IP- 1 即m’ = m1’m2’m3’.....m64’=m58m50....m7 其中可以叙述为:m中第58位变为m’中第一位,m中的第50位变为m’中第二位.....m中的第7位变为m’中第64位。 第二步:DES迭代过程(乘积变换) DES第二步是将第一步得到的64位结果分为两半,L0 =m1,m2,....m32, R0=m33,m34....m64,其中16轮迭代过程如图3—3 图3—3(迭代过程) 设密钥k=k1k2k3....k64,ki∈{0,1},1≤ i ≤ 64。DES加密算法过程与密钥K一起作用的16轮乘积变换可以表示为: Li = R i-1 Ri = Li-1⊕f(Ri-1,Ki) I ≤ 1 ≤ 16 其中Li,RI长度均为32位。 L0 = m1’m2’m2’m3’......m32’ R0 = m33’m34’m35’.....m64’ 符号⊕为模2加,f为加密函数(如图3-2),Ki是由密钥k分解产生并经变化后的一个48位的子密钥。整个16轮迭代过程简洁明了,既适用于加密算法也适用于解密算法。 第三步:逆初始置换IP -1 这是DES算法的随后一步,将比特串RL16应用初始置换IP的逆初始置换IP -1 处理后就获得密文C,即C = IP -1 (R16L16) = C1,C2,C3.....C64。 由于DES解密过程是一个加密过程的逆过程在此就不做过多解释 代码函数实现 1、明文与密钥的输入 首先8位ACSII字符的明文与密钥的输入,存放在mingwen[8]和miyao[8]中,然后将这些8位的ASCII字符转换成二进制的64位的明文和密钥,分别存放在mingwenB[64]和miyaoB[64]中,并将二进制的明文和密钥放在文件中 int str[8],i,j,ch,k; FILE *fp4;fp4=fopen(明文二进制.txt,w); k=0; for(i=0;i8;i++) { ch=mingwen[i]; for(j=0;j8;j++) { str[j]=ch%2; ch=ch/2; } for(j=7;j=0;j--) { mingwenB[k]=str[j]; k++; fprintf(fp4,%d,str[j]); } } 2、密钥的产生 1)、64位miyaoB[64]经过pc-1置换,生成56位的比特串。定义pc1_Table[56],存放在afterpc1[56]中。 for(i=0;i56;i++) afterp

文档评论(0)

zhuliyan1314 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档