文件加密实验报告
- 格式:doc
- 大小:490.00 KB
- 文档页数:16
C 语 言 课 程 设 计 实 验 报 告 实验名称:文件加密 院系: 通信与信息工程学院 班级: 通信工程1101班 成员: 田轩铭(组长)、陈亮、张晨华、高梦、程腾 日期:2012年6月25日—7月6日 设计题目:文件加密 一、本次课程设计的目的 通过对文件的加密保护用户的私人隐私,使学生能更好的掌握好高级语言程序,从而了解对程序设计的基本概念和方法,进而学会利用C++语言解决一般应用问题,并为后续的专业学习奠定基础。同时增强同学们之间的团队合作精神,使学生更好的融入社会,将来成为社会有用之才!
二、设计要求 1.要求打开一个源文件,按用户输入的密钥通过异或用算进行加密,加密后文件存入目标文件中。 2.要求开始时进行程序使用的鉴权,验证密码。 3.可以对程序原密码进行修改,对密钥进行修改。 4.要求写出设计报告,报告中要求写出总体设计框架和详细程序分析。 5.5-6名学生为一组,选出组长共同完成。在报告中各同学要明确写出自己所做的工作,并由组长认可评定。 6.书写及设计方案均用A4纸打印以便统一装订成册,并且要求上交电子文本。
三、总体方案的设计及说明 文件加密主要可以分为两大部分:对文件的加密、解密程序和对改密码、改密钥程序。首先运行程序后会对用户进行一个鉴别,需要输入一个与程序事先设定好的密码才打开程序,输入错误次数最高为3次,此程序初始设定密码为123456,,所以输入超过6位的密码程序直接结束退出,输入单个字符字母和数字一样都可以最高输入3次错误,之后便系统自动退出,如输入2-6位字母则只可以输入2次错误系统自动退出,体现了其合理性对数字的高度识别性。 进入程序后该系统共有4个选项即:1.文件加密2.文件解密3.修改密码0.退出程序 用户可选择对应项进行使用及操作。并且进入系统后显示“Welcome”大字符,和相关设计者。进入程序可以对指定的文件进行加密和解密,对密钥进行修改,加密时密钥可由用户随机输入,方便记忆体现其人性化的设计,从而便于加密后记忆,针对了不同的使用人群。 文件的加密、解密程序部分由陈亮、田轩铭同学负责。改密码、改密钥程序部分的程序由张晨华、程腾同学负责。课程设计报告和资料查询由田轩铭、高梦同学负责。
四、程序流程图 五、程序运行结果 1.打开程序,输入密码进行鉴权
2.密码输入三次错误后 3.密码输入正确后,进入程序
4.对文件进行加密(可自行指定任意一个) 5.加密成功 加密后的文件不输入密钥打开则是乱码
原文件: 6.文件解密
解了密钥的文件打开如下 7.修改密码
输入错误2次后,最后一次输入正确并改密123678 六、个人收获和体会
田轩铭(组长) 1107020123 通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。总之,做这份作业对于我们学习C语言有很大的帮助。 在做课程设计时,由于运用了很多新知识,新的方法,还有题目更加复杂,应用性更强,在编写过程中遇到了很多困难,幸好我们有团结的集体,通过大家的努力、配合,我们将问题逐个解决,最终成功的完成了作业,由于担任组长,我的领导能力得到了锻炼,对c语言有了进一步理解,这对我们工科学生来说意义是相当重大的,在此感谢我组同学的支持和老师的帮助和指导。 经过这次的学习、设计,我们学到了许多以前不懂的、难懂的知识。这真是锻炼人的好机会,我很喜欢这种应用性的学习。我要感谢我的老师、我的伙伴,你们使我懂得了许多、许多。 陈亮 1107020117 在这次和同组人一起设计程序过程中,我深刻体会到一个人的力量是渺小的,只有大家同心协力,才能完成好一项工作。在设计统计块时,开始遇到了不少困难。例如:文件加密异或是什么?又如:在写程序时,因为对数组,指针不熟悉,而出现了不少错误。经过学习,讨论,最后克服了这些困难。经过这次设计,我对数组,指针的知识和使用又上了一个台阶。数组和指针那么地方便,它真是C语言的重点,精华所在。所以,在以后的学习中,我更应抓紧对指针的学习。 张晨华 1107020111
很高兴能有这样一个机会和同学一起完成一项任务,这其中有各种各样的问题,但通过大家一起讨论,并在老师的耐心辅导下,最终把那些问题都解决了。从中我学到了如何应对困难,如何与人合作。在最终完成作业的那一刻,我们心中都非常的高兴。 我想有了这样一次体验,在以后漫长的人生路上,我们在面对许多意想不到的困难与挫折时,我们会更从容的去面对。通过这次合作,我使自己的动手能力和与人沟通的能力得到了提高,这将使我在以后的的道路上走的更稳,收获更多。所以,我们应感谢老师的良苦用心。本来我还不太赞成这种做法,但现在,我知道了,这是对的,是值的我们用心去做的。 同时我也知道了我们随时都要培养自己的动手能力,只有这样,才能更好的适应这个日新月异的飞速发展的社会。 高梦 1107020105 C语言的确不太容易学,后来学了几节课,觉得也没什么,就是要记的东西比较多,每天都有新内容,记一记就可以了,但当老师布置了几个小作业之后,问题就出现了,单独拿出来每个东西我都略知一二,而让我把它们连接起来,做一个程序,那就难了,每次都是老师写好我们抄,一两次之后,通过对比,我发现这些程序之间有好多东西,都是共同的,变化的指示针对不同问题的处理方法,当然这要通过数学运算来完成,困难之处就是怎样把一个个问题用数学的方法表示出来,怎样表示更简便而已,我的数学还可以,这对我来说不成问题,因此我的信心又恢复了。 程腾 1107020129 虽然在工作中我们有分歧,有争吵但我们都很好的解决了问题,增进了友谊,锻炼了团结协作能力,受益匪浅。其中第一部分和第二部分有点难易失调,是我和组长共同完成,更 加体现出了分工和协作的优点和重要性。 我对自己在这份作业中的表现特别满意,提出了很多很好的建议,事实表明那些建议确实起到了很好的作用。也加深了我对”= =”和”if”等的理解和操作,从实践中了解和体会到了C++的魅力和作用,也让我体会到大学学的东西的重要性。
七、组长评语 这次的课程设计中,让我们收获了很多。 首先,很荣幸我能成为组长和我们组的同学一起做这次的实习课题,而我们组能在规定的时间内出色完成,是我们组所有人共同努力的结果。这次的课题,对我们来说确实难度非常大,对初学C语言的我们来说,最初的几次尝试,几乎就无法完成这个课题。后来,在老师对课题的简单讲解后,我们对课题有了更深的理解,同时也有了完成课题的信心。最后经过了不懈的努力,终于将这个程序完成。在这里要谢谢老师对我们的帮助,更感谢我们组的同学,没有你们的努力,我们跟本无法这么快将这个课题做完。我希望在今后的学习道路上,我们组还要继续发扬这种迎难而上精神,保持着对知识的渴望和追求,向着胜利的方向继续前进!
组长给小组成员打分表
学号 姓名 小组编号 任务分工 组长打分 1107020123 田轩铭(组长) 1 程序调试、实验报告 90 1107020117 陈亮 2 程序调试、资料收集 95 1107020111 张晨华 3 程序调试 90 1107020105 高梦 4 资料收集 90 1107020129 程腾 5 资料收集 90 源程序: #include // 标准输入、输出函数 #include // 标准库函数 #include // 字符串处理函数 #include // 字符操作函数 /*///////////////////////////////////////////////////////////// int getpassword(char password[]) //密码 { FILE *fp; char pwd[30]; if((fp=fopen("c:\\password.dat","w+"))==NULL) { printf("出错!程序退出\n"); } else { fscanf(fp,"%s",pwd); } if(!strcmp(password,pwd)) return (1); else return (0);
}*/
///////////////////////////////////////////////////////////////加密解密 void fun(char *s_file,char *m,char *c_file)//加密解密 { int i=0; FILE *fp1,*fp2; register char ch; fp1=fopen(s_file,"rb"); fp2=fopen(c_file,"wb"); if(fp1==NULL) { printf("不能打开文件\n"); exit(1); } if(fp2==NULL) { printf("不能建立文件\n"); exit(1); }