DES加密解密课程设计报告.docx_第1页
DES加密解密课程设计报告.docx_第2页
DES加密解密课程设计报告.docx_第3页
DES加密解密课程设计报告.docx_第4页
DES加密解密课程设计报告.docx_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

成都信息工程学院课程设计报告DES算法加密与解密的设计与实现课程名称: 密码算法程序设计 学生姓名: 学生学号: 专业班级: 任课教师: XX年 XX 月 XX 日指导老师评阅成绩表学习与工作态度(30%)选题意义(10%)研究水平与设计能力(25%)课程设计说明说(论文)撰写质量(25%)设计创新(10%)总分指导老师签名: 年 月 日课程设计答辩记录及评价表学生讲述情况教师主要提问记录学生回答问题情况答辩评分评分项目分值评价参考标准评分总分优良中及格差选题意义1098764研究水平与设计能力252320181510课程设计说明书(论文)撰写质量252320181510设计创新1098764答辩效果302825221915答辩小组成员签名答辩小组组长签名: 年 月 日课程设计成绩评定表成绩汇总评分项目评分比例分数课程设计总分指导老师评分50%答辩小组评分50%目录1背景11.1 DES算法概述11.2 DES算法描述12系统设计32.1系统主要目标32.2系统运行环境43功能需求分析43.1整体功能分析43.2 DES算法一轮的功能分析44模块划分54.1 初始置换54.2 轮结构64.2.1 E盒扩充变换64.2.2 S盒压缩变换74.2.3 P盒置换74.3 逆初始置换85程序分模块实现85.1将字符串转换成二进制流85.2子密钥的产生95.3F函数的计算95.4 16轮加密的实现105.5把密钥,密文,明文的二进制转换为10进制115.6解密的实现115.7程序运行界面预览116测试报告116.1程序总体运行情况126.2密钥中间过程126.3加密过程的中间结果136.4解密过程的中间结果147课程报告总结14151背景1.1 DES算法概述DES(Data Encryption Standard)是由美国IBM公司于20世纪70年代中期的一个密码算(LUCIFER)发展而来,在1977年1月15日,美国国家标准局正式公布实施,并得到了ISO的认可,在过去的20多年时间里,DES被广泛应用于美国联邦和各种商业信息的保密工作中,经受住了各种密码分析和攻击,有很好的安全性。然而,目前DES算法已经被更为安全的Rijndael算法取代,但是DES加密算法还没有被彻底的破解掉,仍是目前使用最为普遍的对称密码算法。所以对DES的研究还有很大价值,在国内DES算法在POS、ATM、磁卡及智能卡(IC卡)、加油站、高速公路收费站等领域被广泛应用,以此来实现关键的数据保密,如信用卡持卡人的PIN码加密传输,IC卡与POS机之间的双向认证、金融交易数据包的MAC校验等,均用到DES算法。DES算法是一种采用传统的代替和置换操作加密的分组密码,明文以64比特为分组,密钥长度为64比特,有效密钥长度是56比特,其中加密密钥有8比特是奇偶校验,DES的加密和解密用的是同一算法,它的安全性依赖于所用的密钥。它首先把需要加密的明文划分为每64比特的二进制的数据块,用56比特有效密钥对64比特二进制数据块进行加密,每次加密可对64比特的明文输入进行16轮的替换和移位后,输出完全不同的64比特密文数据。由于DES算法仅使用最大为64比特的标准算法和逻辑运算,运算速度快,密钥容易产生,适合于在大多数计算机上用软件快速实现,同样也适合于在专用芯片上实现。1.2 DES算法描述DES算法的加密过程首先对明文分组进行操作,需要加密的明文分组固定为64比特的块。图1-1是DES加密算法的加密流程。图1-2是密钥扩展处理过程。图1-1DES加密算法流程图1-2子密钥产生流程2系统设计2.1系统主要目标(1)用C+设计一个DES加密/解密软件系统;(2)完成一个明文分组的加解密,明文和密钥是ASCII码,长度都为8个字符,输入明文和密钥,输出密文,进行加密后,能够进行正确的解密;(3)程序运行时,要求输出第15、16轮的密钥,以及第15、16轮加密或解密之后的值,16进制表示;(4)程序有良好的人机交互操作;(5)要求从两个文件分别读取明文和密钥,并在程序中输出明文及密钥;(6)要求提供所设计系统的报告及完整的软件。2.2系统运行环境本软件用C语言编写,编写时所用的工具主要是Microsoft Visual C+6.0。编辑成功后的.EXE文件可以在装有windows系统的任何计算机上使用。测试平台:Windows 7旗舰版使用软件:Microsoft Visual C+6.03功能需求分析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;而下一轮右半部分的32比特Ri的计算则是由上一轮右半部分Ri-1和轮密钥Ki输入到F函数中进行变换,变换结果与上一轮左半部分Li进行异或运算,得到Ri。因此每一轮的变换可由下面公式表示:Li=R1-1Ri=Li-1F(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比特作为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()函数把输入的明文、密钥、密文转换为二进制流,其中p是输入的字符串,b是转换后的二进制流。void To2Bin(char p,int b) int i=0,k=0;for(i=0;i=1) if(j&pi) bk+=1; else bk+=0; 5.2子密钥的产生子密钥产生函数:SubKey(),其中参数K0为输入的密钥。用到Replacement()函数,此函数实现密钥PC_1置换,和PC_2置换。Lif_move()函数实现每一轮的左移位功能。void SubKey(int K0)/子密钥产生函数int i=0;int K156,K256;int C1728,D1728;Replacement(K0,PC_1,K1,56);/密钥置换PC_1for(i=0;i28;i+)/将PC_1输出的56比特分为左右两部分C0i=K1i;D0i=K1i+28;i=0;while(i16)int j;lif_move(Ci,Ci+1,move_timesi);lif_move(Di,Di+1,move_timesi);for(j=0;j28;j+)K2j=Ci+1j;K2j+28=Di+1j;Replacement(K2,PC_2,Ki,48);/密钥置换PC_2i+;5.3F函数的计算F函数为加密做准备,其中的Replacement()实现E盒扩展,P盒置换。S_compress()函数实现S盒的压缩变化。void F_Function(int a32,int b32,int n)/F函数int i;int tmp48;int tep32;Replacement(a,E_Table,tmp,48);for(i=0;i48;i+)tmpi=tmpiKni;S_compress(tmp,tep);Replacement(tep,P_Table,b,32);5.4 16轮加密的实现Encryption()函数实现16轮加密,其中F_Function()函数即为F函数。void Encryption(int m064,int c164)int i,k;int arry32;int c064,m164;Replacement(m0,IP_Table,m1,64); /初始置换IPfor(i=0;i32;i+)L0i=m1i;R0i=m1i+32;k=1;while(k17)F_Function(Rk-1,arry,k-1);for(i=0;i32;i+)Lki=Rk-1i;Rki=Lk-1iarryi;k+;for(i=0;i32;i+)c0i=R16i;c0i+32=L16i;Replacement(c0,IP_1_Table,c1,64); /逆初始置换5.5把二进制转换为10进制转换为十进制是为输出16进制做准备,To10()函数把每四个字节转换成一个10进制数。5.6解密的实现解密函数Decryption(),解密过程中先有change()函数把密钥互换,然后用和加密相同的算法则可正确解密。5.7程序运行界面预览可根据需要选择加密和解密,加密又可选择直接输入明文和密钥或是从文件读取明文和密钥。6测试报告测试明文:12345678测试密钥:123456786.1程序总体运行情况加密情况:6.2密钥中间过程16轮子密钥如下:子密钥生成过程中的值:经过测试这些函数,能够得到正确的16轮密钥6.3加密过程的中间结果初始二进制明文和密钥:初始IP:第一轮E盒扩展结果:第一轮S盒输出:第一轮P盒置换结果:IP逆置换:经过对个函数的测试,能正确加密。6.4解密过程的中间结果解密的密钥还是加密时的密钥,得到16轮子密后,将顺序全部颠倒一下。因为解密过程与加密过相返。准备解密的密文:初始IP:第一次E盒扩展:第一次S盒压缩:第一次P盒置换:解密后的二进制结果:经过对个函数的测试,能正确加密。7课程报告总结通过这次程序设计,我学到了很多东西,首先更深入的理解了DES算法,不仅完完全全弄懂了DES算法的各个过程,像密钥产生过程中的左移位、S盒的压缩变换等,也能

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论