《网络信息安全》课程设计报告Word文档格式.docx
《《网络信息安全》课程设计报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《《网络信息安全》课程设计报告Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
附录…………………………………………………………………………………15
第一部分 课程设计准备
1.1课程设计题目:
无密钥的置换加密软件开发
1.2 成员分工:
xxx:
负责人员组织、总体设计、撰稿排版
xxx:
软件测试分析、运行维护
xxx:
负责本次课设概要分析、需求分析
xxx:
负责源代码的编写、修改、调试
负责课程设计准备部分、设备支持
1.3 课题背景及意义
当今世界正处于信息时代,网络信息安全已经成为我们网络应用过程中非常重要的一点,为了网络信息的安全,一般会采用各种各样的加密解密软件应对来自网络的威胁,通过各种安全协议软件能够最大可能得解决这些威胁,而为了了解加解密算法,我们应当首先了解古典加解密算法。
这次课设的目的就是开发一款无密钥置换加密软件,让更多的人了解加解密算法,以应对越来越多的网络安全威胁。
1.4 实验平台介绍
VisualC++(简称VC)是Microsoft公司推出的目前使用极为广泛的基于Windows平台的C++可视化开发环境。
VC基于C,C++语言,主要由是MFC组成,是与系统联系非常紧密的编程工具,它兼有高级,和低级语言的双重性,功能强大,灵活,执行效率高,几乎可说VC在
Windows平台无所不能。
VC主要是针对Windows系统,适合一些系统级的开发,可以方便实现一些底层
的调用。
在VC里边嵌入汇编语言很简单。
当对系统性能要求很高的时候,可用VC开发。
VC在多线程、网络通信、分布应用方面,有着不可比拟的优势。
2.1 课设软件需求分析
2.1.1设计目的
综合运用本课程及网络信息安全的相关知识设计并实现一个应用程序,能够实现无密钥置换加密,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,进一步掌握古典密码体制以及算法。
2.1.2设计要求
要求所设计开发的程序能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,要求明文序列能够达到1000位。
2.2 概要设计
根据对用户的要求及功能设置可以得到以下的流程图2-1
图2-1 概要设计流程图
2.3 源代码
#include<
iostream.h>
classSubKey
{ //定义子密钥为一个类
public:
intkey[8][6];
}subkey[16];
//定义子密钥对象数组
classDES
{
int encipher_decipher;
//判断加密还是解密
intkey_in[8][8];
//用户原始输入的64位二进制数
intkey_out[8][7];
//除去每行的最后一位校验位
intc0_d0[8][7];
//存储经PC-1转换后的56位数据
int c0[4][7],d0[4][7];
//分别存储c0,d0
inttext[8][8];
//64位明文
inttext_ip[8][8];
//经IP转换过后的明文
int A[4][8],B[4][8];
//A,B分别存储经IP转换过后明文的两部分,便于交换
inttemp[8][6];
//存储经扩展置换后的48位二进制值
int temp1[8][6];
//存储和子密钥异或后的结果
int s_result[8][4];
//存储经S变换后的32位值
inttext_p[8][4];
//经P置换后的32位结果
intsecret_ip[8][8];
//经逆IP转换后的密文
public:
voidKey_Putting();
void PC_1();
int function(int,int);
//异或
void SubKey_Production();
voidIP_Convert();
void f();
void_IP_Convert();
voidOut_secret();
};
voidDES:
:
Key_Putting() //得到密钥中对算法有用的56位
{
cout<
<
"
请输入64位的密钥(8行8列且每行都得有奇数个1):
\n"
;
for(inti=0;
i<
8;
i++)
for(intj=0;
j<8;
j++){
cin>
>key_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;
i<
i++)
for(j=0;
j<7;
j++)
c0_d0[i][j]=key_out[(pc_1[i][j]-1)/8][(pc_1[i][j]-1)%8];
}
intDES:
function(int a,intb) //模拟二进制数的异或运算,a和b为整型的0和1,返回值为整型的0或1
if(a!
=b)return 1;
elsereturn0;
voidDES:
SubKey_Production() //生成子密钥
int move[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-2
14, 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,
44,49,39,56, 34,53,
46, 42,50,36, 29, 32
for(inti=0;
16;
i++) //生成子密钥
{
intj,k;
int a[2],b[2];
intbb[28],cc[28];
for(j=0;
j<
4;
j++)
for(k=0;
k<
7;
k++)
c0[j][k]=c0_d0[j][k];
for(j=4;
j<
for(k=0;
7;
k++)
d0[j-4][k]=c0_d0[j][k];
for(j=0;
j++)
for(k=0;
k++){
bb[7*j+k]=c0[j][k];
cc[7*j+k]=d0[j][k];
}
for(j=0;
move[i][1];
j++){
a[j]=bb[j];
b[j]=cc[j];
}
for(j=0;
28-move[i][1];
j++){
bb[j]=bb[j+1];
cc[j]=cc[j+1];
}
for(j=0;
j<move[i][1];
bb[27-j]=a[j];
cc[27-j]=b[j];
for(j=0;
28;
j++){
c0[j/7][j%7]=bb[j];
d0[j/7][j%7]=cc[j];
for(j=0;
j<4;
j++) //L123--L128是把c0,d0合并成c0_d0
for(k=0;
k<7;
k++)
c0_d0[j][k]=c0[j][k];
for(j=4;
8;
j++)
for(k=0;
k<7;
k++)
c0_d0[j][k]=d0[j-4][k];
for(j=0;
j++) //对Ci,Di进行PC-2置换
for(k=0;
k<6;
subkey[i].key[j][k]=c0_d0[ (pc_2[j][k]-1)/7 ][(pc_2[j][k]-1)%7];
void DES:
IP_Convert()
int IP[8][8]={ //初始置换IP矩阵
58, 50,42, 34, 26,18,10, 2,
60, 52, 44, 36,28, 20, 12,4,
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'
cin>>
encipher_decipher;
char * s;
if(encipher_decipher==1)s="
明文";
elses="
密文"
cout<
<"
请输入64位"
s<<
(二进制):
\n"
inti,j;
for(i=0;
i++)
for(j=0;
cin>
>
text[i][j];
for(i=0;
8;
i++) //进行IP变换
for(j=0;
text_ip[i][j]=text[ (IP[i][j]-1)/8][(IP[i][j]-1)%8];
2.4 调试分析过程描述
2.4.1程序输入
图2-2 程序输入
(一)
图2-3程序输入
(二)
图2-4程序输入(三)
图2-5程序输入(四)
图2-6程序输入(五)
2.4.2检验程序执行
图2-7检测程序执行
(一)
图2-8 检测程序执行
(二)
图2-9检测程序执行(三)
第三部分 课程设计心得体会
这学期我们学习了《网络信息安全》这门课,在xx老师的带领下,我们系统规范得学习了网络信息安全的基础知识、功能等,让我们改变了以前对网络安全简单而肤浅的认识,使我们明白网络安全技术是应对网络威胁的最好手段,使我们明白网络安全的重要性。
本次课程设计是在网络信息安全学习的基础上更深得了解掌握古典加密算法中的置换加密算法。
当今世界正处于信息时代,网络信息安全已经成为我们网络应用过程中非常重要的一点,为了网络信息的安全,一般会采用各种各样的加密解密软件应对来自网络的威胁,通过各种安全协议软件能够最大可能得解决这些威胁,而为了了解加解密算法,我们应当首先了解古典加解密算法。
这次课设的目的就是开发一款无密钥置换加密软件,让更多的人了解加解密算法,以应对越来越多的网络安全威胁。
经过这些天的设计开发,无密钥的置换加密软件基本开发完毕。
本软件基本达到了设计要求:
能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,明文序列能够达到1000位。
本次课程设计是分组讨论和制作的。
在制作的过程中,我们学到的不仅仅是知识,我们还认识许多事情。
这次设计对我们的综合能力是一次很好的锻炼,使我们的动手能力提高了一大步,同时也使我们充分认识到合作的可贵。
在我们所开发的无密钥的置换加密软件,能够完成基本的加密要求,通过分析、编写程序、测试程序等步骤完成课程设计。
最后按照吕老师的要求写成文档,从中也对WORD的运用提高的很多。
但是该软件还有许多不足的地方,还有许多东西有待完善。
还有就是我们对网络知识的掌握有限或者不牢固,许多地方概念还是不清楚,无密钥的置换加密软件达到了基本要求,但是有待进一步改善,希望老师给予批评。
本次设计小组由九名成员组成,每个成员能够根据自己的职能积极完成自己的任务,同时小组成员之间能够通过互相帮助、集体讨论等方式一步步完成设计,这是难能可贵的,在本次实际的过程中大家真正感受到了集体的智慧与团结的力量。
在设计的过程中我们确实遇到了许许多多的问题,从课本上最基本的问题到整个系统的问题都是我们前进的绊脚石,当遇到这些问题的时候我们一般会采取集体讨论的方法解决问题,或者上网寻求解决,有时实在搞不懂就向吕老师请教,在团队的努力以及吕老师的指导下我们最终完成了设计,我想这是我们的成果也是老师的成果,感谢老师给我们这次机会,让我们在不断地磨砺中快速成长起来。
附录:
1.参考资料:
吕林涛《网络信息安全技术概论》科学出版社
网络资料:
2.小组成员:
xxx
xxx
xxx
xxx
xxx
xxx
xxx