课程设计(论文)DES加密解密的实现 .doc
《课程设计(论文)DES加密解密的实现 .doc》由会员分享,可在线阅读,更多相关《课程设计(论文)DES加密解密的实现 .doc(15页珍藏版)》请在三一办公上搜索。
1、Xian 成都信息工程学院课程设计报告DES加密解密的实现课程名称:应用密码算法程序设计 学生姓名: 学生学号: 2008122112 专业班级: 信息安全2008级3班 任课教师: 2010年 11 月 5 日附件:课程设计成绩评价表指导老师评阅成绩表学习与工作态度(30%)选题意义(10%)文献综述(10%)研究水平与设计能力(20%)课程设计说明说(论文)撰写质量(20%)设计创新(10%)总分指导老师签名: 年 月 日课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况答辩评分评分项目分值评价参考标准评分总分优良中及格差选题意义1098764文献综述1098764研究水
2、平与设计能力201917151310课程设计说明书(论文)撰写质量201917151310设计创新1098764答辩效果302825221915答辩小组成员签名答辩小组组长签名: 年 月 日课程设计成绩评定表成绩汇总评分项目评分比例分数课程设计总分指导老师评分50%答辩小组评分50%目 录1 背景与意义32. 系统设计42.1系统主要目标42.2主要软件需求(运行环境)42.3功能模块与系统结构42.3.1 密钥模块42.3.2 加密模块52.3.3 解密模块53 系统功能程序设计53.1基本要求部分53.1.1 初始置换IP53.1.2 E盒扩展63.1.3 与密钥进行异或63.1.4 S盒
3、变换63.1.5 P置换运算73.1.6 与左32位进行异或73.1.7 逆IP置换83.1.8 Des加密函数83.1.9 密钥交换93.1.10 Decode()解密函数103.2较高要求部分113.2.1 分组加密实现113.2.2 明文分组最后分组的填充113.3程序界面预览124. 测试报告124.1 密钥中间过程124,2 加密过程中的各步结果134.3 解密过程中的各步结果135 结论14参考文献141 背景与意义 DES是由美国IBM公司于20世纪70年代中期的密码算法发展而来的,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可。在过去近20年的时间里,
4、DES被广泛应用于美国联邦和各种商业信息的安全保密工作中,经受信了各种密码分析和攻击,体现出了令人满意的字全性。但随着密码分析技术和计算能力的提高,1994年,美国决定不再使用DES算法,目前DES算法已被更为安全的加解密算法取代。虽然这样,但是目前还无法将DES加密算法彻底破解掉,而且DES算法的加解密算法非常快,仍是目前使用最为普遍的对称密码算法。在国内,随着三金工程尤其是金卡工程的启动,DES算法在POS、ATM、磁卡及智能卡、加汕站、高速公路收费站等领域被广泛应用,以此来实现关键数据的保密,如信用卡人的PIN码加密伟输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用
5、到DES算法。2. 系统设计2.1系统主要目标基本要求部分:1能够对一个明文分组进行加密,加密后能够正确解密。2程序运行时可以输出任一组密钥。因为实现了对任意长度明加密,所以没输出每一轮加密后的结果。因为当明文长度过长时,每一轮加密结果会很多。3程序有良好的人机交互操作;较高要求部分:1如果明文不止一个分组,程序能完成分组,然后加密;最后一个分组长度不足时要求完成填充;2密钥采用ASCII码,明文输入信息可以是文字(可以是汉字或英文,要求不止一个加密分组长度),任意字符。进行加密后,能够进行正确的解密;3. 程序代码有比较好的结构,模块划分合理,用类进行封装,通过调用类的成员函数实现加密解密功
6、能。2.2主要软件需求(运行环境)本软件用C#语言编写,编写时所用的工具主要是Visual Studio。编辑成功后的.EXE文件可以在装有windows系统的任何计算机上使用。测试平台:Windows XP Professional使用软件:Microsoft Visual Studio 20052.3功能模块与系统结构该软件由三个模块构成;2.3.1 密钥模块private void Key(string str) /此函数用来获取密钥的数组str是密钥字符串,最后得到钥密二进制数组.用一个类成员数组key来存放。private void KeyBuild() /此函数用来构造16轮子密钥
7、private void Keycreate(int midkey2,int movebit, int n)/此函数用来实现循环左移,同时进行PC2置换上面二个函数用来产生16轮密钥,最后存放在类成员二维数组keyArray中。private void ShowKey() /此函数用来显示密钥2.3.2 加密模块private void button2_Click(object sender, EventArgs e) /加密事件加密事件包含了ArrayDes()函数;private void ArrayDes() /此函数用来对明文分组加密ArrayDes()包含PlainArray()、K
8、ey()、KeyBuild()、Keycreate()、ShowKey()和Des()函数,private void PlainArray(string str) /此函数用来获取明文字符串的二进制数组。private void Des(int, plain, int key, int n) /DES加密函数2.3.3 解密模块private void button4_Click(object sender, EventArgs e) /解密事件private void Exchange() /此函数用来交换16轮密钥,把第一轮作最后一轮private void ArrayDecode() /
9、此函数用来分组解密private void EncodeArray(string st) /此函数用来对16进制的密文转成二进制private void Decode(ref int, plain,int key,int n) /解密函数3 系统功能程序设计3.1基本要求部分3.1.1 初始置换IP将IP盒分为左32位和右32位,将明文左32位和右32位分别进行IP置换,最后既实现了IP置换,同时还将明文分成了左32位和右32位,为下一步做好了准备。for (i = 0; i 32; i+) lDatai = EncodeIP1i - 1; rDatai = EncodeIP1i+32 - 1
10、;循环变量i用来找到IP盒中下标为i的数,IPi取出该数,由于计算机中下标是从零开始计算的,而IPi表的是明文二进制中第几个数,所以应置换成明文二进制中第IPi-1那个数。3.1.2 E盒扩展private void EChange(ref int rData, ref int rDataP) for (int i = 0; i 48; i+) rDataPi = rDataEi - 1;rData表示要传入的右32位二进制明文,rDataP表示经过E盒变化后的要传回的48位。道理和IP置换差不多。也是找到E盒中相应的数,然后减1找到rData中相应的数,然后存到rDataP中。3.1.3 与
11、密钥进行异或for (i = 0; i 48; i+) rDataPi = rDataPi keyArrayk, i; keyArray数组中存放的是16伦密钥,k表示第几伦,是从0开始计数的。rDataP是从E盒中出来的48位二进,变化完后,依然存在rDataP数组中.3.1.4 S盒变换for (i = 0; i 48; i += 6) n =i/6; linex = (rDataPi 1) + rDataPi + 5; liney = (rDataPi + 1 3) + (rDataPi + 2 2) + (rDataPi + 3 1) + rDataPi + 4; FillBin(re
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计论文DES加密解密的实现 课程设计 论文 DES 加密 解密 实现
链接地址:https://www.31ppt.com/p-3993339.html