文件加密系统课程设计Word格式.docx
《文件加密系统课程设计Word格式.docx》由会员分享,可在线阅读,更多相关《文件加密系统课程设计Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
信息安全是社会稳定安全的必要前提条件。
通过课程设计,使学生了解高级程序设计语言的结构,逐渐培养学生的编程能力、用计算机解决实际问题的能力,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。
为后续各门计算机课程的学习和毕业设计打下坚实基础。
程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试程序及编写设计报告。
本课程设计的目标:
1.巩固《高级语言程序设计》课程学习的内容和加深学生对基本知识的理解和掌握。
2.掌握编程和程序调试的基本技能。
3.掌握软件设计的方法。
4.提高运用程序设计解决实际问题的能力。
5.培养独立思考、综合运用所学有关相应知识的能力。
6.强化上机动手编程能力,闯过理论与实践相结合的难关!
设计要求
1.分析课程设计题目的要求,根据所要求的程序功能,画出程序的流程图。
2.对系统功能模块进行分析,写出详细设计说明文档。
3.对程序源代码进行调试与测试,使其能正确运行。
4.设计完成的软件要便于操作和使用。
5.设计完成后提交课程设计报告。
设计意义
至今,密码技术是取得信息安全性最有效的一种方法,密码技术是信息安全的核心技术。
通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。
进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。
相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。
二.课程设计任务内容
背景
加密技术是电子商务采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。
加密技术包括两个元素:
算法和密钥。
算法是将普通的文本(或者可以理解的信息)与一窜数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。
在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。
功能需求
实现对文件的加密与解密,要求有图形用户界面。
细则如下:
1.能够对一个文件进行加密。
2.加密后生成一个新文件,并且原文件删除。
3.能将加密生成的文件还原成原文件。
4.能够统计文件中单词个数。
三.模块设计
系统模块
包括四个模块:
加密模块,解密模块,显示模块,统计单词模块
图3-1系统模块图
主函数流程图
在主函数中,利用switch语句实现对各个项目的函数调用。
图3-2主函数流程图
函数流程图
加密函数流程图
先读取原文件数据,将原文件称需经过特定条件转换后存放到另一个文件夹。
加密过程,即将读取文件的字符根据加密公式转化为别的字符实现加密。
但由于后面的解密重要判断是否已经是加密文件,所以在文件末尾做记号标记。
存到另一文件夹后关闭文件,最后用remove,rename两个函数实现删除源文件,将加密后文件命名为原文件名,这样只剩下一个加密文件了。
图3-3加密函数流程图
解密函数流程图
先判断是否已经加密,这时要利用加密函数中使用的标识符,可以用fseek函数读取文件末尾的标识符判断是否已加密。
若是则解密,否则不解密。
图3-4解密函数流程图
显示函数流程图
利用文件的操作,用fgetc函数从文件读取数据,再用putchar函数将数据显示到屏幕。
图3-5显示函数流程图
统计单词流程图
从文件中读取字符串,存到数组中。
接着从字符串中读取一个英文单词,出来与要统计的单词比较(strcmp函数),定义一个计数的变量实现记录单词出现的次数。
图3-6统计单词流程图
四.软件使用说明
进入界面
输入0—5,实现不同功能。
图4-1
若输入错误,重新输入。
图4-2
加密文件
输入要加密文件名,文档内容。
图4-3
图4-4
图4-5
解密文件
输入进入系统密码
图4-6
图4-7
图4-8
图4-9
图4-10
显示文件
图4-11
统计单词个数
图4-12
程序存在问题:
1.没有独立的磁盘管理功能,没有能从磁盘开辟空间,对文件进行定义,分区存储以及管理。
2.加密解密方式过于简单,并没有实现完全的加密封锁。
虽然进行了转码,能避免重要信息直接以明文的方式呈现,但是假如有入侵者获取了控制权,虽然他不能够获取文件的信息,但是他可以把这个文件直接删除,或者做一些损坏性的操作。
这堆用户来说依然是不安全的。
程序改进方案:
1、本程序采用的按字符异或加密的算法是一种比较简单的加密算法,安全性较差,若对文件保密性要求比较高,则可采用一些复杂的算法进行加密。
2、本程序入口只能输入要加密或解密的目标文件名,而对加密或解密后的文件不能自定义,只能用程序提供的和存放文件,这样,当对同一目录下多个文档加密时,加密解密操作后的文件会替换原来的文件,造成数据丢失;
五.课程设计心得与体会
关于对程序编写的心得
这个程序看起来挺简单的,但对于对C语言还是初学者的我,还是显得有些难度的。
在编写的过程中,由于粗心经常出现一些比较简单的错误,比如遗漏逗号、双引号、小括号,以及项目名称,从而导致出现乱码。
C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。
看着有错的程序,不知该如何改起!
但是,通过上网查询还有在老师、学长和同学的帮助下,我最终还是完成了程序的编写。
对于课程设计的心得体会
作为计算机类本科生教学的主要基础课之一,课程紧密结合计算机课程类的专业特点,系统介绍操作系统的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解操作系统的知识,建立起系统的概念。
这次操作系统课程设计用时两个个星期,在整整两个一星期的日子里,可以说得是大家积极努力准备,同时可以学到很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。
以前,在写一个程序的时候,我总是不细心,怕很浪费时间。
但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,
其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,确保程序的正确性上都有了很大程度的提高。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。
这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学和老师的辛勤指导下,终于游刃而解。
附录1:
参考文献
1.谭浩强:
C程序设计,清华大学出版社,2005年7月第三版
2.谭浩强:
C++程序设计,清华大学出版社,2004年6月第一版
3.谭浩强,张基温,唐永炎:
编着,C语言程序设计教程.北京:
高等教育出版
社,1992
4.操作系统教程(费祥林,骆斌)
附录2:
程序代码
#include<
>
#defineM20/*宏定义文件名字符串数组大小*/
#defineN20/*宏定义解密码字符串数组大小*/
#defineW20/*宏定义单词字符串数组大小*/
#defineF1000/*宏定义文件读取字符串数组大小*/
#defineE3/*宏定义解密系统密码输入次数*/
charmina[]="
ulinchen"
;
/*初始化解密系统进入密码*/
voidmenu(void);
/*主菜单*/
voidshuru(void);
/*输入*/
voidjiami(void);
/*加密*//*函数原型*/
voidjiemi(void);
/*解密*/
voidshow(void);
/*显示*/
voidcount(void);
/*统计单词数*/
intjudge(void);
/*是否继续判断函数*/
intmain()
{
charnum;
while
(1)
{
menu();
/*显示主菜单*/
scanf("
%c"
&
num);
/*输入数字0--5*/
fflush(stdin);
/*清除数据流,防止恶意输入字符串,
直接操作以第一个字符后面字符串为名的文件*/
switch(num)/*选择语句*/
case'
0'
:
/*选择0*/
printf("
\n"
);
exit(0);
1'
/*选择1*/
system("
cls"
shuru();
\n按任意键返回主菜单"
break;
2'
/*选择2*/
jiami();
/*加密*/
3'
/*选择3*/
jiemi();
4'
/*选择4*/
show();
5'
/*选择5*/
count();
default