文件加密系统课程设计报告Word下载.docx

上传人:b****5 文档编号:19773660 上传时间:2023-01-10 格式:DOCX 页数:24 大小:512.60KB
下载 相关 举报
文件加密系统课程设计报告Word下载.docx_第1页
第1页 / 共24页
文件加密系统课程设计报告Word下载.docx_第2页
第2页 / 共24页
文件加密系统课程设计报告Word下载.docx_第3页
第3页 / 共24页
文件加密系统课程设计报告Word下载.docx_第4页
第4页 / 共24页
文件加密系统课程设计报告Word下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

文件加密系统课程设计报告Word下载.docx

《文件加密系统课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《文件加密系统课程设计报告Word下载.docx(24页珍藏版)》请在冰豆网上搜索。

文件加密系统课程设计报告Word下载.docx

至今,密码技术是取得信息安全性最有效的一种方法,密码技术是信息安全的核心技术。

通过数据加密,人们可以有效地保证通信线路上的容不被泄露,而且还可以检验传送信息的完整性。

进一步,密码技术可以应用于数字签名、身份认证和信息鉴定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。

相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。

二.课程设计任务容

2.1背景

加密技术是电子商务采取的主要安全措施,是最常用的安全手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。

加密技术包括两个元素:

算法和密钥。

算法是将普通的文本(或者可以理解的信息)与一窜数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种算法。

在安全中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。

2.2功能需求

实现对文件的加密与解密,要求有图形用户界面。

细则如下:

1.能够对一个文件进行加密。

2.加密后生成一个新文件,并且原文件删除。

3.能将加密生成的文件还原成原文件。

4.能够统计文件中单词个数。

三.模块设计

3.1系统模块

包括四个模块:

加密模块,解密模块,显示模块,统计单词模块

图3-1系统模块图

3.2主函数流程图

在主函数中,利用switch语句实现对各个项目的函数调用。

图3-2主函数流程图

3.3函数流程图

3.3.1加密函数流程图

先读取原文件数据,将原文件称需经过特定条件转换后存放到另一个文件夹。

加密过程,即将读取文件的字符根据加密公式转化为别的字符实现加密。

但由于后面的解密重要判断是否已经是加密文件,所以在文件末尾做记号标记。

存到另一文件夹后关闭文件,最后用remove,rename两个函数实现删除源文件,将加密后文件命名为原文件名,这样只剩下一个加密文件了。

图3-3加密函数流程图

3.3.2解密函数流程图

先判断是否已经加密,这时要利用加密函数中使用的标识符,可以用fseek函数读取文件末尾的标识符判断是否已加密。

若是则解密,否则不解密。

图3-4解密函数流程图

3.3.3显示函数流程图

利用文件的操作,用fgetc函数从文件读取数据,再用putchar函数将数据显示到屏幕。

图3-5显示函数流程图

3.3.4统计单词流程图

从文件中读取字符串,存到数组中。

接着从字符串中读取一个英文单词,出来与要统计的单词比较(strcmp函数),定义一个计数的变量实现记录单词出现的次数。

图3-6统计单词流程图

四.软件使用说明

4.1进入界面

输入0—5,实现不同功能。

图4-1

若输入错误,重新输入。

图4-2

4.2加密文件

输入要加密文件名,文档容。

图4-3

图4-4

图4-5

4.3解密文件

输入进入系统密码

图4-6

图4-7

图4-8

图4-9

图4-10

4.4显示文件

图4-11

4.5统计单词个数

图4-12

程序存在问题:

1.没有独立的磁盘管理功能,没有能从磁盘开辟空间,对文件进行定义,分区存储以及管理。

2.加密解密方式过于简单,并没有实现完全的加密封锁。

虽然进行了转码,能避免重要信息直接以明文的方式呈现,但是假如有入侵者获取了控制权,虽然他不能够获取文件的信息,但是他可以把这个文件直接删除,或者做一些损坏性的操作。

这堆用户来说依然是不安全的。

程序改进方案:

1、本程序采用的按字符异或加密的算法是一种比较简单的加密算法,安全性较差,若对文件性要求比较高,则可采用一些复杂的算法进行加密。

2、本程序入口只能输入要加密或解密的目标文件名,而对加密或解密后的文件不能自定义,只能用程序提供的anma.txt和mingma.txt存放文件,这样,当对同一目录下多个文档加密时,加密解密操作后的文件会替换原来的文件,造成数据丢失;

五.课程设计心得与体会

5.1关于对程序编写的心得

这个程序看起来挺简单的,但对于对C语言还是初学者的我,还是显得有些难度的。

在编写的过程中,由于粗心经常出现一些比较简单的错误,比如遗漏逗号、双引号、小括号,以及项目名称,从而导致出现乱码。

C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。

看着有错的程序,不知该如何改起!

但是,通过上网查询还有在老师、学长和同学的帮助下,我最终还是完成了程序的编写。

5.2对于课程设计的心得体会

作为计算机类本科生教学的主要基础课之一,课程紧密结合计算机课程类的专业特点,系统介绍操作系统的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解操作系统的知识,建立起系统的概念。

这次操作系统课程设计用时两个个星期,在整整两个一星期的日子里,可以说得是大家积极努力准备,同时可以学到很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

以前,在写一个程序的时候,我总是不细心,怕很浪费时间。

但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代码才能完成的任务,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路,

其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,确保程序的正确性上都有了很大程度的提高。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学和老师的辛勤指导下,终于游刃而解。

附录1:

参考文献

1.谭浩强:

C程序设计,清华大学,2005年7月第三版

2.谭浩强:

C++程序设计,清华大学,2004年6月第一版

3.谭浩强,基温,唐永炎:

编著,C语言程序设计教程.:

高等教育出版

社,1992

4.操作系统教程(费祥林,骆斌)

附录2:

程序代码

#include<

stdio.h>

stdlib.h>

string.h>

ctype.h>

conio.h>

#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:

/*输入错误*/

\n\t\t输入错误,请重新输入。

(按任意键返回主菜单)"

}

getch();

/*等待输入,是界面停留*/

/*清除数据流*/

/*清屏*/

}

voidmenu(void)/*主菜单函数*/

\n\n"

\t********************************************************\n"

\t**\n"

\t*1--输入2--加密3--解密4--显示5--统计0--退出*\n"

\t0.退出系统。

、\n"

\t1.输入信息,并写入数据文件。

\t2.对给定的文件进行加密。

\t3.对给定的文件进行解密。

\t4.显示文本文件的容。

\t5.统计某单词在文件中出现的次数。

\t请选择(0--5):

"

voidshuru(void)/*输入函数*/

FILE*fp;

intx=1;

/*定义x=1,输入*/

charch,fname[M];

while(x)

\n\n键入要输入信息的文件名:

"

%s"

fname);

/*输入文件名*/

if((fp=fopen(fname,"

w"

))==NULL)/*若不能打开*/

存储空间不足!

!

else

请输入文档的容:

(以Ctrl+z结束)\n"

while((ch=getchar())!

=EOF)

fputc(ch,fp);

fclose(fp);

\n文档输入并保存成功!

继续创建文件并输入信息?

(按Y继续)"

x=judge();

voidjiami(void)/*加密函数*/

FILE*fp,*fp1;

charc,pd,fname[M];

\n\n键入要加密的文件名称:

r"

))==NULL)

\n此文件未能打开,重新输入(按Y)?

if(!

fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);

/*判断文件是否已进行加密步骤*/

if(pd=='

$'

\n文件已使用本程序加密!

重新输入要加密的文件名(按Y)?

fclose(fp);

rewind(fp);

if((fp1=fopen("

jiami.txt"

"

\n加密后的文档:

\n\n"

while((c=fgetc(fp))!

fputc(c+520,fp1);

/*加密公式“c+520”*/

putchar(c+520);

fclose(fp1);

fp1=fopen("

a"

fputc('

fp1);

remove(fname);

/*删除被加密的原文件*/

rename("

/*加密后的文件名更改为原文件名*/

\n\n文档加密并保存成功!

继续加密文件?

voidjiemi(void)/*解密函数*/

charc,pd,fname[M],mm[N],mima[N];

intx=1,y=1,z=0;

while(y)

\n\n请输入进入解密系统的密码:

mm);

if(strcmp(mm,mima)==0)/*验证密码,判断字符串是否相等*/

y=0;

\n\n键入要解密的文件名称:

if((fp==fopen(fname,"

if(pd!

='

\n文件未曾使用本程序加密!

jiemi.txt"

\n解密后的文档:

fputc(c-520,fp1);

putchar(c-520);

x=0;

/*删除被解密的文件*/

/*解密后的文件名更改为原文件名*/

\n\n文档解密并保存成功!

继续解密文件?

\n\n密码输入有误!

\n重新输入密码?

(按Y重新输入)\n"

y=judge();

z++;

if(z==E)

\n对不起,您输入错误次数太多,请仔细回想密码!

}

voidshow(void)/*显示函数*/

charfname[M];

\n\n键入要显示的文件名称:

\n%s的容是:

while(!

feof(fp))/*判断是否为文件末尾*/

putchar(fgetc(fp));

\n继续显示文件(按Y继续)?

voidcount(void)/*统计单词数函数*/

charfname[M],

word[W],/*要统计的单词*/

str[F],/*保存文档容*/

nword[M];

/*从容读取的单词*/

inti=0,j,z=0,count=0,x=1,t;

\n\n键入要查找单词的文件名称:

x=judge();

feof(fp))

str[i++]=fgetc(fp);

/*将文档容存入字符串数组*/

\n键入要统计个数的单词:

word);

t=strlen(word);

for(j=0;

j<

t;

j++)

word[j]=tolower(word[j]);

/*使要统计单词均是小写字母*/

i;

if(isalpha(str[j]))

str[j]=tolower(str[j]);

nword[z++]=str[j];

if(z!

=0)

nword[z]='

\0'

/*保证字符串结束*/

if(strcmp(word,nword)==0)

count++;

z=0;

\n文档中有%s的单词数为:

%d\n"

word,count);

count=0;

i=0;

\n继续统计单词个数(按Y继续?

intjudge(void)/*是否继续判断函数*/

charch;

ch);

if(ch=='

y'

||ch=='

Y'

return1;

return0;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > IT计算机 > 计算机硬件及网络

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1