ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:321.19KB ,
资源ID:2934607      下载积分:8 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/2934607.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(DES加密解密课程设计报告.docx)为本站上传会员【w****g】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

DES加密解密课程设计报告.docx

1、 成都信息工程学院 课程设计报告 DES算法加密与解密的设计与实现 课程名称: 密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: XX年 XX 月 XX 日 指导老师评阅成绩表 学习与工作态度(30%) 选题意义(10%) 研究水平与设计能力(25%) 课程设计说明说(论文)撰写质量(25%) 设计创新(10%) 总分 指导老师签名:

2、 年 月 日 课程设计答辩记录及评价表 学生 讲述情况 教师主要 提问记录 学生回答 问题情况 答辩评分 评分项目 分值 评价参考标准 评分 总分 优 良 中 及格 差 选题意义 10 9 8 7 6 4 研究水平与设计能力 25 23 20 18 15 10 课程设计说明书(论文)撰写质量 25 23 20 18 15 10 设计创新 10 9 8 7 6 4 答辩效果

3、30 28 25 22 19 15 答辩小组成员签名 答辩小组组长签名: 年 月 日 课程设计成绩评定表 成绩汇总 评分项目 评分 比例 分数 课程设计总分 指导老师评分 50% 答辩小组评分 50% 目录 1背景 1 1.1 DES算法概述 1 1.2 DES算法描述 1 2系统设计 3 2.1系统主要目标 3 2.2系统运行环境 4 3功能需求分析 4 3.1整体功能分析 4 3.2

4、DES算法一轮的功能分析 4 4模块划分 5 4.1 初始置换 5 4.2 轮结构 6 4.2.1 E盒扩充变换 6 4.2.2 S盒压缩变换 7 4.2.3 P盒置换 7 4.3 逆初始置换 8 5程序分模块实现 8 5.1将字符串转换成二进制流 8 5.2子密钥的产生 9 5.3F函数的计算 9 5.4 16轮加密的实现 10 5.5把密钥,密文,明文的二进制转换为10进制 11 5.6解密的实现 11 5.7程序运行界面预览 11 6测试报告 11 6.1程序总体运行情况 12 6.2密钥中间过程 12 6.3加密过程的中间结果 13 6.4解密过

5、程的中间结果 14 7课程报告总结 14 1背景 1.1 DES算法概述 DES(Data Encryption Standard)是由美国IBM公司于20世纪70年代中期的一个密码算(LUCIFER)发展而来,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可,在过去的20多年时间里,DES被广泛应用于美国联邦和各种商业信息的保密工作中,经受住了各种密码分析和攻击,有很好的安全性。然而,目前DES算法已经被更为安全的Rijndael算法取代,但是DES加密算法还没有被彻底的破解掉,仍是目前使用最为普遍的对称密码算法。所以对DES的研究还有很大价值,在

6、国内DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键的数据保密,如信用卡持卡人的PIN码加密传输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。 DES算法是一种采用传统的代替和置换操作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效密钥长度是56比特,其中加密密钥有8比特是奇偶校验,DES的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。它首先把需要加密的明文划分为每64比特的二进制的数据块,用56比特有效密钥对64比特二进制数据块进行加密,每次加密可对64比特的明文输入进行16

7、轮的替换和移位后,输出完全不同的64比特密文数据。由于DES算法仅使用最大为64比特的标准算法和逻辑运算,运算速度快,密钥容易产生,适合于在大多数计算机上用软件快速实现,同样也适合于在专用芯片上实现。 1.2 DES算法描述 DES算法的加密过程首先对明文分组进行操作,需要加密的明文分组固定为64比特的块。图1-1是DES加密算法的加密流程。图1-2是密钥扩展处理过程。 图1-1DES加密算法流程 图1-2子密钥产生流程 2系统设计 2.1系统主要目标 (1)用C++设计一个DES加密/解密软件系统; (2)完成一个明文分组的加解密,明文和密钥

8、是ASCII码,长度都为8个字符,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密; (3)程序运行时,要求输出第15、16轮的密钥,以及第15、16轮加密或解密之后的值,16进制表示; (4)程序有良好的人机交互操作; (5)要求从两个文件分别读取明文和密钥,并在程序中输出明文及密钥; (6)要求提供所设计系统的报告及完整的软件。 2.2系统运行环境 本软件用C语言编写,编写时所用的工具主要是Microsoft Visual C++6.0。编辑成功后的.EXE文件可以在装有windows系统的任何计算机上使用。 测试平台:Windows 7旗舰版 使用软件:Micro

9、soft Visual C++6.0 3功能需求分析 3.1整体功能分析 3.2 DES算法一轮的功能分析 4模块划分 4.1 初始置换 首先输入64比特的明文块,按照初始置换(IP)表进行置换,DES初始置换表如图3-1所示。 图4-1 初始置换表 4.2 轮结构 经过DES算法第一阶段的初始置换得到的64比特块分为两部分,前32位为左半部分,后32位为右半部分,如上面图3-2所示,DES算法的论结构分为左右两部分32比特在每一轮中被独立处理。具体过程为:下一轮左半部分32比特Li等于上一轮右半部分32比特Ri-1

10、而下一轮右半部分的32比特Ri的计算则是由上一轮右半部分Ri-1和轮密钥Ki输入到F函数中进行变换,变换结果与上一轮左半部分Li进行异或运算,得到Ri。因此每一轮的变换可由下面公式表示: Li=R1-1 Ri=Li-1⊕F(Ri-1,Ki) 4.2.1 E盒扩充变换 将右半部分的32比特,进行E盒扩展,扩展成为48比特。具体变换过程为把输入的32比特按照8行4列方式依次排列,形成一个8*4矩阵,然后E盒扩展之后输出8*6矩阵。 图4-2 E盒扩展 4.2.2 S盒压缩变换 将E盒的输出与子密钥进行异或得到的48比特作为

11、S盒的输入,进入S盒变换,48比特压缩为32比特。S盒的安全性能是保证DES算法安全性的源泉,DES算法共有8个不同的S盒,每个S盒接受6位输入,输出4位。8个S盒如下: 4.2.3 P盒置换 S盒输出的32比特经过P盒置换,重新编排32比特的位置。下图为P盒置换过程。 图4-3P盒置换 4.3 逆初始置换 DES算法进行完16轮运算之后,需要进行逆初始置换,逆初始置换正好为初始置换的逆,如一个矩阵进行初始置换之后输出,在进行依次逆初始置换的输出结果为初始矩阵。 5程序分模块实现 5.1将字符串转换成二进制流 用ToBin()

12、函数把输入的明文、密钥、密文转换为二进制流,其中p是输入的字符串,b是转换后的二进制流。 void To2Bin(char p[],int b[]) { int i=0,k=0; for(i=0;i<8;i++) { int j=0x80; for(;j;j>>=1) { if(j&p[i]) { b[k++]=1; } else { b[k++]=0; } } } } 5.2子密钥的产生 子密钥产生函数:SubKey(),其中参数K0为

13、输入的密钥。用到Replacement()函数,此函数实现密钥PC_1置换,和PC_2置换。Lif_move()函数实现每一轮的左移位功能。 void SubKey(int K0[]) //子密钥产生函数 { int i=0; int K1[56],K2[56]; int C[17][28],D[17][28]; Replacement(K0,PC_1,K1,56); //密钥置换PC_1 for(i=0;i<28;i++) //将PC_1输出的56比特分为左右两部分 { C[0][i]=K1[i]; D[0][i]=K1[i+28]; }

14、 i=0; while(i<16) { int j; lif_move(C[i],C[i+1],move_times[i]); lif_move(D[i],D[i+1],move_times[i]); for(j=0;j<28;j++) { K2[j]=C[i+1][j]; K2[j+28]=D[i+1][j]; } Replacement(K2,PC_2,K[i],48); //密钥置换PC_2 i++; } } 5.3F函数的计算 F函数为加密做准备,其中的Replacement()实现E盒扩展,P盒

15、置换。S_compress()函数实现S盒的压缩变化。 void F_Function(int a[32],int b[32],int n) //F函数 { int i; int tmp[48]; int tep[32]; Replacement(a,E_Table,tmp,48); for(i=0;i<48;i++) { tmp[i]=tmp[i]^K[n][i]; } S_compress(tmp,tep); Replacement(tep,P_Table,b,32); } 5.4 16轮加密的实现 Encryption()函数

16、实现16轮加密,其中F_Function()函数即为F函数。 void Encryption(int m0[64],int c1[64]) { int i,k; int arry[32]; int c0[64],m1[64]; Replacement(m0,IP_Table,m1,64); //初始置换IP for(i=0;i<32;i++) { L[0][i]=m1[i]; R[0][i]=m1[i+32]; } k=1; while(k<17) { F_Function(R[k-1],arry,k-1); for(i

17、0;i<32;i++) { L[k][i]=R[k-1][i]; R[k][i]=L[k-1][i]^arry[i]; } k++; } for(i=0;i<32;i++) { c0[i]=R[16][i]; c0[i+32]=L[16][i]; } Replacement(c0,IP_1_Table,c1,64); //逆初始置换 } 5.5把二进制转换为10进制 转换为十进制是为输出16进制做准备,To10()函数把每四个字节转换成一个10进制数。 5.6解密的实现 解密函数Decryption(),解

18、密过程中先有change()函数把密钥互换,然后用和加密相同的算法则可正确解密。 5.7程序运行界面预览 可根据需要选择加密和解密,加密又可选择直接输入明文和密钥或是从文件读取明文和密钥。 6测试报告 测试明文:12345678 测试密钥:12345678 6.1程序总体运行情况 加密情况: 6.2密钥中间过程 16轮子密钥如下: 子密钥生成过程中的值: 经过测试这些函数,能够得到正确的16轮密钥 6.3加密过程的中间结果 初始二进制明文和密钥: 初始IP: 第一轮E盒扩展结果: 第一轮S盒输出: 第一轮

19、P盒置换结果: IP逆置换: 经过对个函数的测试,能正确加密。 6.4解密过程的中间结果 解密的密钥还是加密时的密钥,得到16轮子密后,将顺序全部颠倒一下。因为解密过程与加密过相返。 准备解密的密文: 初始IP: 第一次E盒扩展: 第一次S盒压缩: 第一次P盒置换: 解密后的二进制结果: 经过对个函数的测试,能正确加密。 7课程报告总结 通过这次程序设计,我学到了很多东西,首先更深入的理解了DES算法,不仅完完全全弄懂了DES算法的各个过程,像密钥产生过程中的左移位、S盒的压缩变换等,也能一一实现。其次也提高了编程技巧,在处理一些问题时能选择较佳的方法。 因为在做这个软件的时候看了很多别人的代码,所以我还是学到了不少东西,我看到别人的封装更好,代码也整洁,使用一些更好的实现方法。再看我代码,我就感觉我的代码重用率很差。还有一些编程方面的习惯也不太好。通过此次实践我发现很多不足,以后还要去弥补这些不足。 参考文献: [1] 谭浩强 C程序设计(第三版) 清华大学出版社 2009 [2] 张世斌 万武南 张金全 孙宣东 现代密码学 西安电子科技大学出版社 2009

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服