ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:688.50KB ,
资源ID:4326008      下载积分:10 金币
快捷注册下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4326008.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请

   平台协调中心        【在线客服】        免费申请共赢上传

权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

注意事项

本文(文件加密系统课程设计.doc)为本站上传会员【快乐****生活】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

文件加密系统课程设计.doc

1、程序设计综合课程设计报告 仲恺农业工程学院 课 程 设 计 文件加密 姓 名 孙浩斌 院(系) 信息科学与技术学院 专业年级 计算机132 学 号 201320244207 指导教师 罗慧慧 职 称 学生 起止时间 2015-6-15至2015-6-24 仲恺农业工程学院教务处制 目录 一.课程设计目的和要求 2 1.1设计目的 2 1.2设计要求 2 1.3设计意义 3 二.课程设计任务内容 3 2.1 背景 3 2.2 功能需求 3 三.模块设计

2、 4 3.1 系统模块 4 3.2主函数流程图 5 3.3 函数流程图 6 3.3.1 加密函数流程图 6 3.3.2解密函数流程图 7 3.3.3显示函数流程图 8 3.3.4 统计单词流程图 9 四.软件使用说明 10 4.1进入界面 10 4.2加密文件 11 4.3解密文件 11 4.4显示文件 13 4.5统计单词个数 13 五.课程设计心得与体会 14 5.1 关于对程序编写的心得 14 5.2 对于课程设计的心得体会 14 附录1:参考文献 15 附录2:程序代码 15 一.课程设计目的和要求 1.1设计目的 有时我们有些资料不

3、希望别人看到,最常用的方法就是加密。对给定的相关文件进行加密可以对文件进行保护,可以防止某些重要信息不被别人所知道甚至窃取。对文件起到保护作用,可以方便用户使用某些只有自己能知道的信息,能够安全保护文件的相关内容几信息不被外流。随着信息社会的到来,人们在享受信息资源所带来的巨大的利益的同时,也面临着信息安全的严峻考验。信息安全已经成为世界性的现实问题,信息安全问题已威胁到国家的政治、经济、军事、文化、意识形态等领域,同时,信息安全问题也是人们能否保护自己的个人隐私的关键。信息安全是社会稳定安全的必要前提条件。通过课程设计,使学生了解高级程序设计语言的结构,逐渐培养学生的编程能力、用计算机解决实

4、际问题的能力,掌握基本的程序设计过程和技巧,掌握基本的分析问题和利用计算机求解问题的能力,具备初步的高级语言程序设计能力。为后续各门计算机课程的学习和毕业设计打下坚实基础。 程序设计的主要任务是要求学生遵循软件开发过程的基本规范,运用结构化程序设计的方法,按照课程设计的题目要求,分析、设计、编写、调试和测试程序及编写设计报告。 本课程设计的目标: 1. 巩固《高级语言程序设计》课程学习的内容和加深学生对基本知识的理解和掌握。 2. 掌握编程和程序调试的基本技能。 3. 掌握软件设计的方法。 4. 提高运用程序设计解决实际问题的能力。 5. 培养独立思考、 综合运用所学有关相

5、应知识的能力。 6. 强化上机动手编程能力,闯过理论与实践相结合的难关! 1.2设计要求 1. 分析课程设计题目的要求,根据所要求的程序功能,画出程序的流程图。 2. 对系统功能模块进行分析,写出详细设计说明文档。 3. 对程序源代码进行调试与测试,使其能正确运行。 4. 设计完成的软件要便于操作和使用。 5. 设计完成后提交课程设计报告。 1.3设计意义 至今,密码技术是取得信息安全性最有效的一种方法, 密码技术是信息安全的核心技术。通过数据加密,人们可以有效地保证通信线路上的内容不被泄露,而且还可以检验传送信息的完整性。进一步,密码技术可以应用于数字签名、身份认证和信息鉴

6、定,这些应用对于资源存取控制以及其它安全措施是必须而且有效的。相对于防病毒软件和防火墙软件来说,基于密码技术密码类产品、认证类产品份额相对较小,但随着金融、电信、政府等行业信息化建设对于网络安全整体解决方案需求的增加,将会有较大的增长。 二.课程设计任务内容 2.1 背景 加密技术是电子商务采取的主要安全保密措施,是最常用的安全保密手段,利用技术手段把重要的数据变为乱码(加密)传送,到达目的地后再用相同或不同的手段还原(解密)。加密技术包括两个元素:算法和密钥。算法是将普通的文本(或者可以理解的信息)与一窜数字(密钥)的结合,产生不可理解的密文的步骤,密钥是用来对数据进行编码和解码的一种

7、算法。在安全保密中,可通过适当的密钥加密技术和管理机制来保证网络的信息通讯安全。 2.2 功能需求 实现对文件的加密与解密,要求有图形用户界面。细则如下: 1.能够对一个文件进行加密。 2.加密后生成一个新文件,并且原文件删除。 3.能将加密生成的文件还原成原文件。 4.能够统计文件中单词个数。 三.模块设计 3.1 系统模块 包括四个模块:加密模块,解密模块,显示模块,统计单词模块 图 3-1 系统模块图 3.2主函数流程图 在主函数中,利用switch语句实现对各个项目的函数调用。 图 3-2 主函数流程图 3.3

8、 函数流程图 3.3.1 加密函数流程图 先读取原文件数据,将原文件称需经过特定条件转换后存放到另一个文件夹。加密过程,即将读取文件的字符根据加密公式转化为别的字符实现加密。但由于后面的解密重要判断是否已经是加密文件,所以在文件末尾做记号标记。存到另一文件夹后关闭文件,最后用remove,rename两个函数实现删除源文件,将加密后文件命名为原文件名,这样只剩下一个加密文件了。 图 3-3 加密函数流程图 3.3.2解密函数流程图 先判断是否已经加密,这时要利用加密函数中使用的标识符,可以用fseek函数读取文件末尾的标识符判断是否已加密。若是则解密,否则不解密。

9、 图3-4 解密函数流程图 3.3.3显示函数流程图 利用文件的操作,用fgetc函数从文件读取数据,再用putchar函数将数据显示到屏幕。 图 3-5 显示函数流程图 3.3.4 统计单词流程图 从文件中读取字符串,存到数组中。接着从字符串中读取一个英文单词,出来与要统计的单词比较(strcmp函数),定义一个计数的变量实现记录单词出现的次数。 图3-6 统计单词流程图 四.软件使用说明 4.1进入

10、界面 输入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.加密解密方式

11、过于简单,并没有实现完全的加密封锁。虽然进行了转码,能避免重要信息直接以明文的方式呈现,但是假如有入侵者获取了控制权,虽然他不能够获取文件的信息,但是他可以把这个文件直接删除,或者做一些损坏性的操作。这堆用户来说依然是不安全的。 程序改进方案: 1、本程序采用的按字符异或加密的算法是一种比较简单的加密算法,安全性较差,若对文件保密性要求比较高,则可采用一些复杂的算法进行加密。 2、本程序入口只能输入要加密或解密的目标文件名,而对加密或解密后的文件不能自定义,只能用程序提供的anma.txt和mingma.txt存放文件,这样,当对同一目录下多个文档加密时,加密解密操作后的文件会替换原

12、来的文件,造成数据丢失; 五.课程设计心得与体会 5.1 关于对程序编写的心得 这个程序看起来挺简单的,但对于对C语言还是初学者的我,还是显得有些难度的。 在编写的过程中,由于粗心经常出现一些比较简单的错误,比如遗漏逗号、双引号、小括号,以及项目名称,从而导致出现乱码。C编译的程序对语法检查并不象其它高级语言那么严格,这就给编程人员留下“灵活的余地”,但还是由于这个灵活给程序的调试带来了许多不便,尤其对初学C语言的人来说,经常会出一些连自己都不知道错在哪里的错误。看着有错的程序,不知该如何改起!但是,通过上网查询还有在老师、学长和同学的帮助下,我最终还是完成了程序的编写。 5.2

13、对于课程设计的心得体会 作为计算机类本科生教学的主要基础课之一,课程紧密结合计算机课程类的专业特点,系统介绍操作系统的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解操作系统的知识,建立起系统的概念。 这次操作系统课程设计用时两个个星期,在整整两个一星期的日子里,可以说得是大家积极努力准备,同时可以学到很多很多的的东西,不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前,在写一个程序的时候,我总是不细心,怕很浪费时间。但是,这次课程设计完全改变了我以前的那种错误的认识,以前我接触的那些程序都是很短、很基础的,但是在课程设计中碰到的那些需要很多代

14、码才能完成的任务,在做设计的过程中,我们每一步要做什么,每一步要完成什么任务都有一个很清楚的思路, 其次,以前对于编程工具的使用还处于一知半解的状态上,但是经过一段上机的实践,对于怎么去排错、查错,怎么去看每一步的运行结果,确保程序的正确性上都有了很大程度的提高。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处

15、对以前所学过的知识理解得不够深刻,掌握得不够牢固。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在同学和老师的辛勤指导下,终于游刃而解。 附录1:参考文献 1. 谭浩强:C程序设计,清华大学出版社,2005年7月第三版 2. 谭浩强:C++程序设计,清华大学出版社,2004年6月第一版 3. 谭浩强,张基温,唐永炎:编著,C语言程序设计教程.北京:高等教育出版 社,1992 4.操作系统教程(费祥林,骆斌) 附录2:程序代码 #include #include #include

16、tring.h> #include #include #define M 20 /*宏定义文件名字符串数组大小*/ #define N 20 /*宏定义解密码字符串数组大小*/ #define W 20 /*宏定义单词字符串数组大小*/ #define F 1000 /*宏定义文件读取字符串数组大小*/ #define E 3 /*宏定义解密系统密码输入次数*/ char mina[]=

17、"ulinchen"; /*初始化解密系统进入密码*/ void menu(void); /*主菜单*/ void shuru(void); /*输入*/ void jiami(void); /*加密*/ /*函数原型*/ void jiemi(void); /*解密*/ void show(void); /*显示*/ void count(void); /*统计单词

18、数*/ int judge(void); /*是否继续判断函数*/ int main() { char num; while(1) { menu(); /*显示主菜单*/ scanf("%c",&num); /*输入数字0--5*/ fflush(stdin); /*清除数据流,防止恶意输入字符串, 直接操作以第一个字符后面字符串为名的文件*/

19、 switch(num) /*选择语句*/ { case '0': /*选择 0 */ printf("\n"); exit(0); case '1': /*选择 1 */ system("cls"); shuru();

20、 /*输入*/ printf("\n 按任意键返回主菜单"); break; case '2': /*选择 2 */ system("cls"); jiami(); /*加密*/ printf("\n 按任意键返回主菜单"); break; case '3':

21、 /*选择 3 */ system("cls"); jiemi(); /*解密*/ printf("\n 按任意键返回主菜单"); break; case '4': /*选择 4 */ system("cls"); show(); /*显示*/

22、 printf("\n 按任意键返回主菜单"); break; case '5': /*选择 5 */ system("cls"); count(); /*统计单词数*/ printf("\n 按任意键返回主菜单"); break; default: /*输入错误*/ prin

23、tf("\n\t\t 输入错误,请重新输入。(按任意键返回主菜单)"); break; } getch(); /*等待输入,是界面停留*/ fflush(stdin); /*清除数据流*/ system("cls"); /* 清屏 */ } } void menu(void) /*主菜单函数*/ {

24、printf("\n\n"); printf("\t ********************************************************\n"); printf("\t * *\n"); printf("\t * 1--输入 2--加密 3--解密 4--显示 5--统计 0--退出 *\n"); printf("\t *

25、 *\n"); printf("\t ********************************************************\n"); printf("\n\n"); printf("\t0. 退出系统。 、\n"); printf("\t1. 输入信息,并写入数据文件。\n"); printf("\t2. 对给定的文件进行加密。\n"); printf("\t3. 对给定的文件进行解密。\n"); printf("\t4. 显示文本文件的内

26、容。\n"); printf("\t5. 统计某单词在文件中出现的次数。\n"); printf("\n\n"); printf("\t 请选择(0--5): "); } void shuru(void) /*输入函数*/ { FILE *fp; int x=1; /*定义x=1,输入*/ char ch,fname[M]; while(x) { printf("\n\n 键入要输入信息的文件名

27、"); scanf("%s",fname); /*输入文件名*/ if((fp=fopen(fname,"w"))==NULL) /*若不能打开*/ { printf("存储空间不足!!!\n"); exit(0); } else { printf("请输入文档的内容:(以Ctrl+z 结束)\n"); fflush(stdin); while((ch=getchar())!=EOF)

28、 fputc(ch,fp); fclose (fp); } printf("\n 文档输入并保存成功!"); printf("继续创建文件并输入信息?(按Y继续)"); x=judge(); } } void jiami(void) /*加密函数*/ { FILE *fp,*fp1; char c,pd,fname[M]; int x=1; while(x) { printf("\n\n 键

29、入要加密的文件名称:"); scanf("%s",fname); if((fp=fopen(fname,"r"))==NULL) { printf("\n 此文件未能打开,重新输入(按Y)?"); fflush(stdin); x=judge(); } else { if(!fseek(fp,-(long)sizeof(char),SEEK_END))pd=fgetc(fp);

30、 /*判断文件是否已进行加密步骤*/ if(pd=='$') { printf("\n 文件已使用本程序加密!!!"); printf("重新输入要加密的文件名(按Y)?"); x=judge(); fclose(fp); } else { rewind(fp); if((fp1=fopen("jiami.txt","w"))==NU

31、LL) { printf("存储空间不足!!!\n"); exit(0); } printf("\n 加密后的文档: \n\n"); while((c=fgetc(fp))!=EOF) { fputc(c+520,fp1); /*加密公式“c+520”*/ putchar(c+520); }

32、 fclose(fp); fclose(fp1); fp1=fopen("jiami.txt","a"); fputc('$',fp1); fclose(fp1); remove(fname); /*删除被加密的原文件*/ rename("jiami.txt",fname); /*加密后的文件名更改为原文件名*/

33、 printf("\n\n 文档加密并保存成功!"); printf("继续加密文件?(按Y继续)"); x=judge(); } } } } void jiemi(void) /*解密函数*/ { FILE *fp,*fp1; char c,pd,fname[M],mm[N],mima[N]; int x=1,y=1,z=0; while(y)

34、 { system("cls"); printf("\n\n 请输入进入解密系统的密码:"); scanf("%s",mm); if(strcmp(mm,mima)==0) /*验证密码,判断字符串是否相等*/ { y=0; while(x) { fflush(stdin); printf("\n\n 键入要解密的文件名称:");

35、 scanf("%s",fname); if((fp==fopen(fname,"r"))==NULL) { printf("\n 此文件未能打开,重新输入(按Y)?"); fflush(stdin); x=judge(); } else { if(!fseek(fp,

36、long)sizeof(char),SEEK_END))pd=fgetc(fp); if(pd!='$') { printf("\n 文件未曾使用本程序加密!!!"); printf("重新输入要加密的文件名(按Y)?"); x=judge(); fclose(fp); } el

37、se { rewind(fp); if((fp1=fopen("jiemi.txt","w"))==NULL) { printf("存储空间不足!!!\n"); exit(0); } printf("\n 解密

38、后的文档: \n\n"); while((c=fgetc(fp))!='$') { fputc(c-520,fp1); putchar(c-520); } x=0; fclose(fp);

39、fclose(fp1); remove(fname); /*删除被解密的文件*/ rename("jiemi.txt",fname); /*解密后的文件名更改为原文件名*/ printf("\n\n 文档解密并保存成功!"); printf("继续解密文件?(按Y继续)"); x=judge(); }

40、 } } } else { printf("\n\n 密码输入有误!\n"); printf("\n 重新输入密码?(按Y重新输入)\n"); y=judge(); z++; if(z==E) { printf("\n 对不起,您输入错误次数太多,请仔细回想密码!\n"); y=0; } } } }

41、 void show(void) /*显示函数*/ { FILE *fp; char fname[M]; int x=1; while(x) { printf("\n\n 键入要显示的文件名称:"); scanf("%s",fname); if((fp=fopen(fname,"r"))==NULL) { printf("\n 此文件未能打开,重新输入(按Y)?")

42、 x=judge(); } else { printf("\n%s的内容是: \n\n",fname); while(!feof(fp)) /*判断是否为文件末尾*/ putchar(fgetc(fp)); printf("\n"); fclose(fp); printf("\n 继续显示文件(按Y继续)?");

43、 x=judge(); } } } void count(void) /*统计单词数函数*/ { char fname[M], word[W], /*要统计的单词*/ str[F], /*保存文档内容*/ nword[M]; /*从内容读取的单词*/ int i=0,j,z=0,count=0,x=1,t; F

44、ILE *fp; while(x) { printf("\n\n 键入要查找单词的文件名称:"); scanf("%s",fname); if((fp=fopen(fname,"r"))==NULL) { printf("\n 此文件未能打开,重新输入(按Y)?"); x=judge( ); } else { while(!feo

45、f(fp)) str[i++]=fgetc(fp); /*将文档内容存入字符串数组*/ printf("\n 键入要统计个数的单词:"); scanf("%s",word); t=strlen(word); for(j=0;j

46、 if(isalpha(str[j])) { str[j]=tolower(str[j]); nword[z++]=str[j]; } else if(z!=0) { nword[z]='\0'; /*保证字符串结束*/

47、 if(strcmp(word,nword)==0) count++; z=0; } } fclose(fp); printf("\n文档中有%s的单词数为:%d\n",word,count); count=0; i=0; printf("\n继续统计单词个数(按Y继续?"); x=judge(); } } } int judge(void) /*是否继续判断函数*/ { char ch; fflush(stdin); scanf("%c",&ch); if(ch=='y'||ch=='Y') return 1; else return 0; } 24

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服