欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    DES加密算法实现报告(四川大学)(共9页).doc

    • 资源ID:5437706       资源大小:95.50KB        全文页数:9页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    DES加密算法实现报告(四川大学)(共9页).doc

    精选优质文档-倾情为你奉上四 川 大 学 计 算 机 学 院实 验 报 告学号: 姓名: 班级: 第 试验课程名称信息安全课程设计实验课时2实验项目DES加密算法的实现实验时间2013.04.28实验目的1. 加深对分组密码原理的理解2. 对经典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位待加密明文,其中mi0,1,1i64,DES先执行初始置换IP来对m进行换位处理:然后通过子密钥k1k16进行16次乘积变换,即进行16次迭代处理;最终经过逆初始值换IP -1 的处理,得到64位密文:C=c1c2c3.c64,图1.1 DES简化示意图其中ci0,1,1 i 64. 16轮迭代目的是使明文增加混乱性和扩散性。避免输出密文残留统计规律,使得破译者无法反向推算出密钥。 第一步:初始置换IP 初始置换IP如图12所示,主要用于对明文m中的各位进行换位,目的在于打乱明文m中各位的排列次序。经过初始置换后,m的映射为mIPm 。40 8 48 16 56 24 64 3239 7 47 15 55 23 63 3138 6 46 14 54 22 62 3037 5 45 13 53 21 61 2936 4 44 12 52 20 60 2835 3 43 11 51 19 59 2734 2 42 10 50 18 58 2633 1 41 9 49 17 57 2558 50 42 34 26 18 10 260 52 44 36 28 20 12 462 54 44 36 28 20 14 664 56 48 40 32 24 16 857 49 41 33 25 17 9 159 51 43 35 27 19 11 361 53 45 37 29 21 13 563 55 47 39 31 23 15 7 初始置换IP 逆初始换位IP- 1即m = m1m2m3.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轮迭代过程如图33图33(迭代过程)设密钥k=k1k2k3.k64,ki0,1,1 i 64。DES加密算法过程与密钥K一起作用的16轮乘积变换可以表示为: Li = R i-1 Ri = Li-1f(Ri-1,Ki) I 1 16 其中Li,RI长度均为32位。 L0 = m1m2m2m3.m32 R0 = m33m34m35.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解密过程是一个加密过程的逆过程在此就不做过多解释2 代码函数实现 1、明文与密钥的输入首先8位ACSII字符的明文与密钥的输入,存放在mingwen8和miyao8中,然后将这些8位的ASCII字符转换成二进制的64位的明文和密钥,分别存放在mingwenB64和miyaoB64中,并将二进制的明文和密钥放在文件中int str8,i,j,ch,k;FILE *fp4;fp4=fopen("明文二进制.txt","w");k=0;for(i=0;i<8;i+)ch=mingweni;for(j=0;j<8;j+)strj=ch%2;ch=ch/2;for(j=7;j>=0;j-)mingwenBk=strj;k+;fprintf(fp4,"%d",strj); 2、密钥的产生1)、64位miyaoB64经过pc-1置换,生成56位的比特串。定义pc1_Table56,存放在afterpc156中。for(i=0;i<56;i+) afterpc1i=miyaoBpc1_Tablei-1;2)、56位比特串分组,生成C028和D028for(i=0;i<28;i+) C0i=afterpc1i;for(j=0,i=28;i<56;i+,j+) D0j=afterpc1i;3)、C028、D028进行左移,产生C1628和D1628,为进行pc-2置换产生密钥做准备。for(i=0;i<27;i+)/第一轮数据生成C028与D028C0i=C0i+1;D0i=D0i+1;C027=C00;D027=D00;for(i=1;i<16;i+)/第二轮数据至第十六轮数据生成if(i=1|i=8|i=15)for(j=0;j<27;j+)/左移1位Cij=Ci-1j+1;Dij=Di-1j+1;Ci27=Ci-10;Di27=Di-10;else/左移2位for(j=0;j<26;j+)Cij=Ci-1j+2;Dij=Di-1j+2;Ci26=Ci-10;Ci27=Ci-11;Di26=Di-10;Di27=Di-11;/产生16轮左右数据,为pc-2置换准备。4)、左右两部分比特串合并,存放在int beforekey1656中k=0;for(i=0;i<16;i+)for(j=0;j<28;j+)beforekeyij=Cij;for(k=0;k<28;k+,j+)beforekeyij=Dik;5)、beforekey1656经过pc-2置换,产生16轮密钥keys1648,for(i=0;i<16;i+)for(j=0;j<48;j+)keysij=beforekeyipc_2tablej-1;至此,16轮子密钥产生完毕,为keys1648。3、密文的产生1)、明文经过初始置换IP置换。结果放在afterIP64中。for(j=0;j<64;j+) afterIPj=mingwenBIP_tablej-1; 2)、明文的第0次分组,左部分L032,右部分R032。for(i=0;i<32;i+)L0i=afterIPi;for(j=0,i=32;i<64;i+,j+)R0j=afterIPi;3)、为产生密文,要进行16轮的循环,每次循环生成一个Li32和Ri32,下面进行第一次循环,生成L032和R032。for(i=0;i<32;i+)/Li=R(i-1)L0i=R0i;4)、至于R032的生成,R032=L032f(R0,keys0)。因此,要首先计算出f值。R032经过E变换,由32位扩展为48位,然后与子密钥进行异或,为进入S盒做准备。结果放在afterER048中for(i=0;i<48;i+)afterER0i=R0E_tablei-1;5)、E扩展后,与子密钥进行异或,生成进入S盒前的数据。存放在beforeS48.for(i=0;i<48;i+)if(afterER0i=keys0i)beforeSi=0;elsebeforeSi=1;6)、要进入S盒的48位比特串要经过8个不同的S盒,因此,将48位比特串分在8个数组中,放在beforeSBox86.for(k=0,i=0;i<8;i+)for(j=0;j<6;j+)beforeSBoxij=beforeSk;k+;7)、进入S盒后,进过8个S盒,每个S盒产生一个十进制的数字,在015之间。beforeSBoxi6中的6个数字,第0、5位组成了S盒的行号,第1、2、3、4,4位组成了S盒的列号,根据行列选中S盒中的数据作为输出,存放在afterSBox8中。int hang,lie;for(i=0;i<8;i+)hang=beforeSBoxi0*2+beforeSBoxi5;lie=beforeSBoxi1*8+beforeSBoxi2*4+beforeSBoxi3*2+beforeSBoxi4;afterSBoxi=SBoxihanglie;8)、由S盒出来的8个十进制数字转换成32位的二进制比特串,存放在beroreP32中,为接下来的P置换做准备。k=0;int temp;int str14;for(i=0;i<8;i+)temp=afterSBoxi;for(j=0;j<4;j+)str1j=temp%2;temp=temp/2;for(j=3;j>=0;j-)beforepk=str1j;k+;9)、转换为二进制的32位比特串进行P置换,生成新的32位比特串,也就是f的值。存放在P32中。for(i=0;i<32;i+)pi=beforepp_tablei-1;至此,第一轮的循环已经完成,成功产生了L032和R032。10)、对于剩下的15轮循环,用一个循环语句进行控制,生成余下的15轮中间数据的左部和右部,最后产生L1532和R1532。11)、得到的最后一轮左部32位比特串和右部32位比特串进行合并,但是,合并的时候,右部32位比特串在前,R1532在前,而L1532在后。结果存放在beforeoutput64中for(i=0;i<32;i+)/数据合并,R1532在前,L1532在后面beforeoutputi=R15i;for(i=32,j=0;i<64;i+,j+)beforeoutputi=L15j;12)、左右数据合并后的比特串进行最后的逆置换,生成64位的二进制密文。存放在output64中。for(i=0;i<64;i+)outputi=beforeoutputIPR_tabeli-1;/得到64位密文13)、将得到的64位密文转换为8位的ASCII字符。int charB88;k=0; char miwen8;for(i=0;i<8;i+)for(j=0;j<8;j+)charBij=outputk;k+;for(i=0;i<8;i+)stri=0;if(charBi0=1)stri=stri+128;if(charBi1=1)stri=stri+64;if(charBi2=1)stri=stri+32;if(charBi3=1)stri=stri+16;if(charBi4=1)stri=stri+8;if(charBi5=1)stri=stri+4;if(charBi6=1)stri=stri+2;if(charBi7=1)stri=stri+1;m_outputMiwen=""for(i=0;i<8;i+)miweni=stri;/得到密文miwen8解密过程和加密过程几乎一样,在此不详细做解释。 三.算法运行测试结果 实验数据记录和计算结论(结果)指导教师评议成绩评定: 指导教师签名:专心-专注-专业

    注意事项

    本文(DES加密算法实现报告(四川大学)(共9页).doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开