- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
des密码学课程设计报告
成都信息工程学院课程设计报告DES算法加密与解密的设计与实现课程名称: 密码算法程序设计学生姓名: ** 学生学号: ** 专业班级: ** 任课教师: ** 2012年 6 月 29 日指导老师评阅成绩表学习与工作态度(30%)选题意义(10%)研究水平与设计能力(25%)课程设计说明说(论文)撰写质量(25%)设计创新(10%)总分指导老师签名: 年 月 日课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况答辩评分评分项目分值评价参考标准评分总分优良中及格差选题意义1098764研究水平与设计能力252320181510课程设计说明书(论文)撰写质量252320181510设计创新1098764答辩效果302825221915答辩小组成员签名答辩小组组长签名: 年 月 日课程设计成绩评定表成绩汇总评分项目评分比例分数课程设计总分指导老师评分50%答辩小组评分50%目录1.引言12.设计目标13.软件需求分析13.1功能需求13.2性能需求14.模块划分24.1 密钥产生模块24.2加密模块34.3解密模块55.程序的实现75.1开发环境和语言75.2 功能模块程序实现75.2.1密钥产生模块75.2.2加密模块85.2.3 解密模块125.3 文件加密135.4 文件解密156.测试156.1测试环境156.2 测试过程157.总结178.参考文献171.引言DES是由美国IBM公司于20世纪70年代中期的一个密码算法(LUCIFER算法)发展而来的,在1977年1月15日,美国国家标准局(NBS)正式公布实施,并得到了ISO的认可。在过去的近20多年的时间里,DES被广泛的应用于美国联邦和各种商业信息的安全保密工作中,经受住了各种密码分析和攻击,体现出了令人满意的安全性。DES算法的加密过程非常快,是目前使用的最为普遍的对称密码算法。在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS,ATM,磁卡及智能卡,加油站等领域被广泛使用,以此来实现关键数据的保密。DES算法是一种采用传统的代替和置换作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效长度为56比特,其中加密密钥有8比特是奇偶校验,DES算法的加密和解密密钥使用的是同一算法,它的安全性完全依赖于所有的密钥。由于DES算法运算速度快,密钥产生容易,适合于当前大多数计算机上使用软件方法的实现,同时也适用于在专用芯片上的实现。因此设计和实现一个适用简单的des加密软件是有必要和有意义的。2.设计目标○字符加密:完成多个明文分组的加解密,明文和密钥是ASCII码,明文长度为任意长度,密钥长度为8个字符,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;○能输出6轮的密钥,并以二进制的形式输出○文件加密:从一个文件读取加密明文,在程序中输出加密后的密文,并能将加密密文保存在明文文件的相同磁盘目录下。3.软件需求分析3.1功能需求 该程序是一个加密程序,因此程序采用des加密算法,需要完成对字符和.txt文件的加密,同时还能观察在加密过程中字密钥的产生状态。模块划分合理,用类对函数进行封装。3.2性能需求为了方便用户的使用,具有良好的操作界面是有必要的。因此本软件应采用操作性和美观较强的对话框的界面。4.模块划分本软件由三个主要模块构成:密钥产生模块,加密模块,解密模块。4.1 密钥产生模块子密钥产生过程:用户将初始密钥64位输入到子密钥产生流程中,首先经过密钥置换A,将初始密钥的8个奇偶校验位去掉,留下真正的56位比特初始密钥。然后将56比特的初始密钥分为两个28比特的分组C0及D0。再将两个分组分别经过循环左移1或2位后,连接两个分组成56位,最后经过密钥置换B,进行压缩,抛弃8位后,便可输出16轮子密钥的48比特。其流程图如下: 每轮循环左移位数如下表:轮数12345678910111213141516移位数11222222122222214.2加密模块加密过程分为以下几步:获取用户输入信息的内容,计算其字符长度。如果字符长度为8个字符的整数倍,则直接分组,每组8个字符,否则按相应的字符填充方法进行字符填充,使字符长度刚好为8个字符的整数倍。再将每个分组按相应ASCII值转化成64位二进制。对每个分组进行处理,首先进行初始置换IP在初始置换IP后,明文组再被分成左右两部分Li和Ri,每部分32位。右边32比特Ro进入F函数变换。F函数变化过程为首先将32位明文经过E扩展变成48比特后再与48位
文档评论(0)