《网络信息安全》课程设计报告专业:小组组长:小组成员:指导老师:完成日期:xxxxxxxx实验用纸第2页共15页目录第一部分课程设计准备1.1课程设计题目………………………………………………………………31.2成员分工……………………………………………………………………31.3课题背景及意义……………………………………………………………31.4实验平台介绍………………………………………………………………3第二部分课程设计过程2.1课设软件需求分析…………………………………………………………42.1.1设计目的……………………………………………………………42.1.2设计要求……………………………………………………………42.2概要设计……………………………………………………………………42.3源代码………………………………………………………………………52.4调试分析过程描述………………………………………………………112.4.1程序输入……………………………………………………………112.4.2检验程序执行………………………………………………………12第三部分课程设计体会课程设计心得体会………………………………………………………………14附录…………………………………………………………………………………15xxxxxxxx实验用纸第3页共15页第一部分课程设计准备1.1课程设计题目:无密钥的置换加密软件开发1.2成员分工:xxx:负责人员组织、总体设计、撰稿排版xxx:软件测试分析、运行维护xxx:负责本次课设概要分析、需求分析xxx:负责源代码的编写、修改、调试xxx:负责课程设计准备部分、设备支持1.3课题背景及意义当今世界正处于信息时代,网络信息安全已经成为我们网络应用过程中非常重要的一点,为了网络信息的安全,一般会采用各种各样的加密解密软件应对来自网络的威胁,通过各种安全协议软件能够最大可能得解决这些威胁,而为了了解加解密算法,我们应当首先了解古典加解密算法。这次课设的目的就是开发一款无密钥置换加密软件,让更多的人了解加解密算法,以应对越来越多的网络安全威胁。1.4实验平台介绍VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在Windows平台无所不能。VC主要是针对Windows系统,适合一些系统级的开发,可以方便实现一些底层的调用。在VC里边嵌入汇编语言很简单。当对系统性能要求很高的时候,可用VC开发。VC在多线程、网络通信、分布应用方面,有着不可比拟的优势。xxxxxxxx实验用纸第4页共15页第二部分课程设计过程2.1课设软件需求分析2.1.1设计目的综合运用本课程及网络信息安全的相关知识设计并实现一个应用程序,能够实现无密钥置换加密,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,进一步掌握古典密码体制以及算法。2.1.2设计要求要求所设计开发的程序能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,要求明文序列能够达到1000位。2.2概要设计根据对用户的要求及功能设置可以得到以下的流程图2-1图2-1概要设计流程图根据转换矩阵输出密文根据置换算法转换矩阵输入明文分组排列xxxxxxxx实验用纸第5页共15页2.3源代码#includeiostream.hclassSubKey{//定义子密钥为一个类public:intkey[8][6];}subkey[16];//定义子密钥对象数组classDES{intencipher_decipher;//判断加密还是解密intkey_in[8][8];//用户原始输入的64位二进制数intkey_out[8][7];//除去每行的最后一位校验位intc0_d0[8][7];//存储经PC-1转换后的56位数据intc0[4][7],d0[4][7];//分别存储c0,d0inttext[8][8];//64位明文inttext_ip[8][8];//经IP转换过后的明文intA[4][8],B[4][8];//A,B分别存储经IP转换过后明文的两部分,便于交换inttemp[8][6];//存储经扩展置换后的48位二进制值inttemp1[8][6];//存储和子密钥异或后的结果ints_result[8][4];//存储经S变换后的32位值inttext_p[8][4];//经P置换后的32位结果intsecret_ip[8][8];//经逆IP转换后的密文public:voidKey_Putting();xxxxxxxx实验用纸第6页共15页voidPC_1();intfunction(int,int);//异或voidSubKey_Production();voidIP_Convert();voidf();void_IP_Convert();voidOut_secret();};voidDES::Key_Putting()//得到密钥中对算法有用的56位{cout请输入64位的密钥(8行8列且每行都得有奇数个1):\n;for(inti=0;i8;i++)for(intj=0;j8;j++){cinkey_in[i][j];if(j!=7)key_out[i][j]=key_in[i][j];}voidDES::PC_1()//PC-1置换函数{intpc_1[8][7]={//PC-1};inti,j;for(i=0;i8;i++)for(j=0;j7;j++)c0_d0[i][j]=key_out[(pc_1[i][j]-1)/8][(pc_1[i][j]-1)%8];xxxxxxxx实验用纸第7页共15页}intDES::function(inta,intb)//模拟二进制数的异或运算,a和b为整型的0和1,返回值为整型的0或1{if(a!=b)return1;elsereturn0;}voidDES::SubKey_Production()//生成子密钥{intmove[16][2]={//循环左移的位数1,1,2,1,3,2,4,2,5,2,6,2,7,2,8,2,9,1,10,2,11,2,12,2,13,2,14,2,15,2,16,1};intpc_2[8][6]={//PC-214,17,11,24,1,5,3,28,15,6,21,10,23,19,12,4,26,8,16,7,27,20,13,2,41,52,31,37,47,55,30,40,51,45,33,48,xxxxxxxx实验用纸第8页共15页44,49,39,56,34,53,46,42,50,36,29,32};for(inti=0;i16;i++)//生成子密钥{intj,k;inta[2],b[2];intbb[28],cc[28];for(j=0;j4;j++)for(k=0;k7;k++)c0[j][k]=c0_d0[j][k];for(j=4;j8;j++)for(k=0;k7;k++)d0[j-4][k]=c0_d0[j][k];for(j=0;j4;j++)for(k=0;k7;k++){bb[7*j+k]=c0[j][k];cc[7*j+k]=d0[j][k];}for(j=0;jmove[i][1];j++){a[j]=bb[j];b[j]=cc[j];}for(j=0;j28-move[i][1];j++){bb[j]=bb[j+1];cc[j]=cc[j+1];xxxxxxxx实验用纸第9页共15页}for(j=0;jmove[i][1];j++){bb[27-j]=a[j];cc[27-j]=b[j];}for(j=0;j28;j++){c0[j/7][j%7]=bb[j];d0[j/7][j%7]=cc[j];}for(j=0;j4;j++)//L123--L128是把c0,d0合并成c0_d0for(k=0;k7;k++)c0_d0[j][k]=c0[j][k];for(j=4;j8;j++)for(k=0;k7;k++)c0_d0[j][k]=d0[j-4][k];for(j=0;j8;j++)//对Ci,Di进行PC-2置换for(k=0;k6;k++)subkey[i].key[j][k]=c0_d0[(pc_2[j][k]-1)/7][(pc_2[j][k]-1)%7];}}voidDES::IP_Convert(){intIP[8][8]={//初始置换IP矩阵58,50,42,34,26,18,10,2,60,52,44,36,28,20,12,4,xxxxxxxx实验用纸第10页共15页62,54,46,38,30,22,14,6,64,56,48,40,32,24,16,8,57,49,41,33,25,17,9,1,59,51,43,35,27,19,11,3,61,53,45,37,29,21,13,5,63,55,47,39,31,23,15,7};cout你好,你要加密还是解密?加密请按1号键(输入1),解密请按2号键,并确定.'\n';cinencipher_decipher;char*s;if(encipher_decipher==1)s=明文;elses=密文;cout请输入64位s(二进制):\n;inti,j;for(i=0;i8;i++)for(j=0;j8;j++)cintext[i][j];for(i=0;i8;i++)//进行IP变换for(j=0;j8;j++)text_ip[i][j]=text[(IP[i][j]-1)/8][(IP[i][j]-1)%8];}xxxxxxxx实验用纸第11页共15页2.4调试分析过程描述2.4.1程序输入图2-2程序输入(一)图2-3程序输入(二)图2-4程序输入(三)xxxxxxxx实验用纸第12页共15页图2-5程序输入(四)图2-6程序输入(五)2.4.2检验程序执行图2-7检测程序执行(一)xxxxxxxx实验用纸第13页共15页图2-8检测程序执行(二)图2-9检测程序执行(三)xxxxxxxx实验用纸第14页共15页第三部分课程设计心得体会这学期我们学习了《网络信息安全》这门课,在xx老师的带领下,我们系统规范得学习了网络信息安全的基础知识、功能等,让我们改变了以前对网络安全简单而肤浅的认识,使我们明白网络安全技术是应对网络威胁的最好手段,使我们明白网络安全的重要性。本次课程设计是在网络信息安全学习的基础上更深得了解掌握古典加密算法中的置换加密算法。当今世界正处于信息时代,网络信息安全已经成为我们网络应用过程中非常重要的一点,为了网络信息的安全,一般会采用各种各样的加密解密软件应对来自网络的威胁,通过各种安全协议软件能够最大可能得解决这些威胁,而为了了解加解密算法,我们应当首先了解古典加解密算法。这次课设的目的就是开发一款无密钥置换加密软件,让更多的人了解加解密算法,以应对越来越多的网络安全威胁。经过这些天的设计开发,无密钥的置换加密软件基本开发完毕。本软件基本达到了设计要求:能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,明文序列能够达到1000位。本次课程设计是分组讨论和制作的。在制作的过程中,我们学到的不仅仅是知识,我们还认识许多事情。这次设计对我们的综合能力是一次很好的锻炼,使我们的动手能力提高了一大步,同时也使我们充分认识到合作的可贵。在我们所开发的无密钥的置换加密软件,能够完成基本的加密要求,通过分析、编写程序、测试程序等步骤完成课程设计。最后按