《网络信息安全》课程设计报告docxWord文件下载.docx
《《网络信息安全》课程设计报告docxWord文件下载.docx》由会员分享,可在线阅读,更多相关《《网络信息安全》课程设计报告docxWord文件下载.docx(10页珍藏版)》请在冰豆网上搜索。
j<
8;
j++)〃对Ci,Di进行PC-2置换
for(k=0;
k<
6;
k++)subkey[i].keyD][k]=cO_dO[(pc_2[j][k]-l)/7][(pc_2[j][k]-l)%7];
}
voidDES:
:
IP_Convert()
{
intIP[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<
v”你好,你要加密还是解密?
加密请按1号键(输入1),解密请按2号键,并确定
cin>
>
encipher_decipher;
char*s;
if(encipher_decipher==1)s=”明文”;
elses=”密文”;
cout«
n请输入64位“vvsvv”(二进制):
\n”;
int
for(i=0;
iv8;
i++)
j++)
〃进行IP变换
j++)teXt_iP[i]O]=text[(IP[i]0]-l)/8][(IP[i][j]・l)%8];
2.4调试分析过程描述程序输入
MM”!
•nn
图2-2
m输
入
图2-3程序输入
(二)图2-4程序输入(三)
图2-5程序输入(四)
eA,,・66、
5MMS.,ax
图2-6程序输入(五)
检验程序执行
«
•©
eecim*toiadacx»
g®
图2-7检测程序执行
(一)
IPleaseinputkey:
zhaochunyanzhongnanmindaPleaseinputMword:
图2-8检测程序执行
(二)
Output
1
23
24
8
9
10
20
5
21
17
18
22
2
16
13
14
15
12
11
6
Thedataitemsinascendingorder:
Jia
24―
jia
10―
4
21—
18―
18—
0―
24—
18~
7―
12-
11—
18-
ghehe
—3-IJJ-
19
1A
图2-9检测程序执行(三)
第三部分课程设计心得体会
这学期我们学习了《网络信息安全》这门课,在xx老师的带领下,我们系统规范得学习了网络信息安全的基础知识、功能等,让我们改变了以前对网络安全简单而肤浅的认识,使我们明白网络安全技术是应对网络威胁的最好手段,使我们明白网络安全的重要性。
本次课程设计是在网络信息安全学习的基础上更深得了解掌握古典加密算法中的置换加密算法。
当今世界正处于信息时代,网络信息安全已经成为我们网络应用过程中非常重要的一点,为了网络信息的安全,一般会采用各种各样的加密解密软件应对来自网络的威胁,通过各种安全协议软件能够最大可能得解决这些威胁,而为了了解加解密算法,我们应当首先了解古典加解密算法。
这次课设的目的就是开发一款无密钥置换加密软件,让更多的人了解加解密算法,以应对越来越多的网络安全威胁.
经过这些天的设计开发,无密钥的置换加密软件基本开发完毕。
本软件基本达到了设计要求:
能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,明文序列能够达到10()()位。
本次课程设计是分组讨论和制作的。
在制作的过程中,我们学到的不仅仅是知识,我们还认识许多事情。
这次设计对我们的综合能力是一次很好的锻炼,使我们的动手能力提高了一大步,同时也使我们充分认识到合作的可贵。
在我们所开发的无密钥的置换加密软件,能够完成基本的加密要求,通过分析、编写程序、测试程序等步骤完成课程设计。
最后按照吕老师的要求写成文档,从中也对WORD的运用提高的很多。
但是该软件还有许多不足的地方,还有许多东西有待完善。
还有就是我们对网络知识的掌握有限或者不牢固,许多地方概念还是不清楚,无密钥的置换加密软件达到了基本要求,但是有待进一步改善,希望老师给予批评。
本次设计小组由九名成员组成,每个成员能够根据自己的职能积极完成自己的任务,同时小组成员之间能够通过互相帮助、集体讨论等方式一步步完成设计,这是难能可贵的,在本次实际的过程中大家真正感受到了集体的智慧与团结的力量。
在设计的过程中我们确实遇到了许许多多的问题,从课本上最基本的问题到整个系统的问题都是我们前进的绊脚石,当遇到这些问题的时候我们一般会采取集体讨论的方法解决问题,或者上网寻求解决,有时实在搞不懂就向吕老师请教,在团队的努力以及吕老师的指导下我们最终完成了设计,我想这是我们的成果也是老师的成果,感谢老师给我们这次机会,让我们在不断地磨砺中快速成长起来。
附录:
1.参考资料:
吕林涛《网络信息安全技术概论》科学出版社网络资料:
2.小组成员:
xxx
XXXXXX
XXX
XXX如有侵权请联系告知删除,感谢你们的配合!
如有侵权请联系告知删除,感谢你们的配合!
第一部分课程设计准备1.1课程设计题目3
1.2成员分工31.3课题背景及意义3
1.4实验平台介绍3第二部分课程设计过程
2.1课设软件需求分析4
设计目的4
设计要求42.2概要设计4
2.3源代码52.4调试分析过程描述11
程序输入11
检验程序执行12第三部分课程设计体会
课程设计心得体会14附录15
第一部分课程设计准备
1.1课程设计题目:
无密钥的置换加密软件开发1.2成员分工:
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课设软件需求分析设计目的
综合运用本课程及网络信息安全的相关知识设计并实现一个应用程序,能够实现无密钥置换加密,以VisualC++作为开发平台,通过实践复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,进一步掌握古典密码体制以及算法。
设计要求
要求所设计开发的程序能够实现古典加密算法中无密钥置换加密,由用户输入要加密的明文序列,不需要输入密钥,然后输出加密后的密文序列,要求明文序列能够达到1000位。
2.2概要设计
根据对用户的要求及功能设置可以得到以下的流程图2-1
输入明文
分绢排列
根据置换算法转换矩
fA・
根据转换矩阵输出密文
图2-1概要设计流程图2.3源代码
#includc<
iostrcam.h>
classSubKev
{〃定义子密钥为一个类
public:
intkey[8][6];
}subkey[16];
〃定义子密钥对象数组
classDES
〃判断加密还是解密
〃用户原始输入的64位二进制数
〃除去每行的最后一位校验位
〃存储经PC-1转换后的56位数据
intencipher_decipher;
intkey_in[8][8];
intkey_out[8][7];
intc0_d()[8][7];
intc()[4][7J,dO[4][7J;
inttext|8][8];
inttext_ip[8][8];
intA[4][8],B[4][8];
便于交换
inttemp[8][6];
inttempi[8][6];
ints_result[8][4];
inttext_p[8][4];
intsecret_ip[8][8];
voidKey_PuttingQ;
voidPC_1Q;
intfunction(int,int);
//异或
〃分别存储cO,dO
〃64位明文
〃经IP转换过后的明文
//A,B分别存储经IP转换过后明文的两部分
〃存储经扩展置换后的48位二进制值
〃存储和子密钥异或后的结果
〃存储经S变换后的32位值
〃经P置换后的32位结果
〃经逆IP转换后的密文
voidSubI<
cy_Prodiiction();
voidIP_Convert();
voidf。
;
void_IP_Convert();
voidOut_secret();
Key_PuttingO〃得到密钥中对算法有用的56位
{
"
请输入64位的密钥(8行8列且每行都得有奇数个l):
\nM;
for(inti=0;
i<
i++)for(int户0;
jv8;
j++){
kcy_in[i][j];
if(j!
=7)key_out[i][j]=key_in[i][j];
PC_10//PC-1置换函数
intpc_l[8][7]={//PC-1
);
inti,j;
7;
j++)cO_dO[i][j]=key_out[(pc_l[i][j]-l)/8][(pc_l[i][j]-l)%8];
intDES:
function(inta,intb)//模拟二进制数的异或运算,a和b为整型的0和1,返回值为整型的。
或1
if(a!
=b)rcturn1;
elsereturn0;
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
//PC-2
};
intpc_2[8][6]={
14,17,11,24,1,5,
3,28,15,6,21,1(),
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
16;
i++)〃生成子密钥
(intj,k;
inta[2],b[2];
intbb[28],cc[28];
fo町=0;
jv4;
j++)fcr(k=0;
kv7;
k++)
cO[j][k]=cO_dO[j][k];
for(j=4;
k++)doo-4][k]=co_dog][k];