C语言程序设计 加密解密系统_第1页
C语言程序设计 加密解密系统_第2页
C语言程序设计 加密解密系统_第3页
C语言程序设计 加密解密系统_第4页
C语言程序设计 加密解密系统_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程设计说明书设计名称:c语言课程设计题目:加密解密系统姓名: 专业:自动化班级:08级1班学号: 指导老师: 日期:2010年7月10日课程设计任务书 自动化 专业 08 年级 01 班 一、设计题目加密解密系统二、主要内容系统的数据项主要包括:文件导入、文件读写、密钥函数。要求具有以下功能:(1)系统以固定方式工作。v(2)加密解密文件。(3)能保证数据的完整加解迷和数据的无失真。(具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读c语言课程设计指导书,明确课程设计的目的、意义和要求;2、快速总结c程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉tuber

2、 c 或c+的上机环境。能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确定时间进度。如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。5学习并了解良好的程序设计风格。按质、按量、并按时间完成课程设计的任务。6提供可运行的课程设计系统,参加上机面试答辩。本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用。同时锻炼学生根据题目进行分析、设计、编码、调试程序和书写必

3、要文档的综合处理能力,从实践中学习并体会程序设计的结构化思想和设计方法。一、 进度安排依照教学计划,课程设计时间为2周。按照软件工程的思想,软件系统的分析设计至关重要,并要充分重视书写“文档”。避免甚至杜绝“拿到题目就编码”的现象。建议将时间分为三个阶段:第一阶段,根据题目要求,拿出系统的总体设计方案:即构思各程序模块的算法,并画出相应的n-s图,同时编写相应的文档;第二阶段,根据n-s图编写程序代码并单独调试,再将调试通过的各个子模块进行集成调试;第三阶段,归纳文档资料,按要求填写在课程设计说明书上,并参加答辩。三个阶段时间分配的大概比例是: 35:45:20。二、 完成后应上交的材料1课程

4、设计的题目、系统的总功能和各子模块的功能;2题目的设计思想(或算法)简述;3主要程序的框图(要求用n-s图);4源程序代码(要求在关键的位置有注释,从而增加程序的可读性);5课程设计的总结报告,主要包括以下内容:(1)课程设计中遇到的主要问题和解决方法;(2)你的创新和得意之处;(3)设计中存在的不足及改进的设想;(4)本次课程设计的感想和心得体会。以上完成的源程序及相关文档,填写在课程设计说明书上,要求干净整洁,符合课程设计的要求和规范。三、 总评成绩指导教师 签名日期 年 月 日系 主 任 审核日期 年 月 日c语言程序设计目录一、系统功能61、系统需求分析62、系统功能分析73、系统总框

5、架7二、功能模块的描述71.数据结构72.main()主函数8三、源程序9加密9解密10四、课程设计总结121、设计过程的感受与体会122、遇到的问题与解决方法123、创新与得意之处134、设计中存在的不足及改进的设想13一、系统功能1、系统需求分析在日常工作和学习中数据的保密是一项非常重要的工作,而数据的加密与解密是又是一项脑力与数学的结晶,我们就需要计算机来帮助我们实现这项繁琐的工作。本系统的设计主要是解日常生活工作中简单的加解密工作,并作为自动化专业大二实习作业,让我们能更家熟悉c语言编程,以次来锻炼大家,让大家有实际应用c语言的能力。加密是以某种特殊的算法改变原有的信息数据,使得未授权

6、的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容。加密解密系统是一个为单机用户开发的保持文件信息秘密性的软件系统。加密时将用户的明文信息转化为只有拥有的者才可以查看的信息的过程;解密是将密文用用户的将密文转化为明文的过程。对于我这个程序来说是具有可行性的,加密算法数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径来达到保护数据不被非法人窃取、阅读的目的。 该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程本程序采用是移位法加密,既对文件中的数

7、据在ascii下进行数据的移位,以实现数据的加密。另外我们要对程序进行反复修改与论证以保证数据加密与解密的完整与正确性。2、系统功能分析 本系统的功能包括了数据加密、数据解密、文件导入功能,对加密文件实现解读与加密功能。 3、系统总框架 加密主程序 解密主程序 输入密钥 输入密钥 打开待加密文件 打开加密文件 加密 解密 加密完成 解密完成 关闭文件 关闭文件 程序结束 程序结束二、功能模块的描述1.main()主函数程序采用模块化设计,分别为加密程序和解密程序。主函数是程序的入口,各模块独立,可分块调整,均由主函数控制。2. jiami函数 本函数通过编写的算法对给出的文本文件内容进行加密。

8、此函数主要按asc码进行加密。首先打开文件,判断需加密文件是否为空。再通过密钥对密文进行加密。导入文件打开只读文件,用fp指向此结点打开只写文件,用fp1指向此结点输入密钥,scanf(“%d”,&key) fp=null|fp1=nullyes noch+=key chz |chz&chayes noch-=26fputc(ch,fp1)fputc(ch,fp1)当读到的数据不为空printf(open file fail!);return;关闭文件,返回主函数3.jiemi函数 此函数是将被加密的文件通过解密算法,将其还原。其思想如下所示:导入文件打开只读文件,用fp指向此结点输入密钥,s

9、canf(“%d”,&key) fp=nullyes noch-=key chz|chayes noch+=26putchar(ch)putchar(ch)当读到的数据不为空输出错误并返回关闭文件,返回主函数三、源程序加密#include#includevoid jiami()int key;char ch;file *fp,*fp1;printf(请输入密钥:);scanf(%d,&key);fp=fopen(待加文件.txt,r);fp1=fopen(加密文件.txt,w);if(fp=null)printf(待加密文件打开,请查找原因n!);return;while(ch=fgetc(f

10、p)!=eof)ch+=key; if(chz | chz&cha)ch-=26; fputc(ch,fp1);fclose(fp);fclose(fp1);void main()jiami(); printf(加密已成功,可以打开加密文件n);解密include#includevoid jiemi()char ch;int key;file *fp,*fp1;printf(请输入密钥:);scanf(%d,&key);fp=fopen(加密文件.txt,r);fp1=fopen(解密文件.txt,w);if(fp=null)printf(文件打开失败,请查找原因n);return;while

11、(ch=fgetc(fp)!=eof) ch-=key; if(chz | cha) ch+=26;fputc(ch,fp1);fclose(fp);fclose(fp1);void main()jiemi(); printf(程序结束);四、课程设计总结1、设计过程的感受与体会 在进行此次的c语言课程设计的时候,我已经丢下c这门语言半年多了,同时,我学习并使用java和c#进行编程也有半年了,这次重新用回c语言,除了指针和文件那部分要重新掌握外,c总的来说对我是没有什么问题的。在学习c前听别人说过c是最简单的,比那些面向对象的语言要简单得多,学完c#后再回顾,发现原来c更难,因为c只提供了很

12、少的库函数,什么都要自己写,那些说c简单的人,只因他们没有用c做过复杂的东西罢了。所以开发大型软件,光用c是不够的。不过经历了这次的课程设计,我也学到了很多东西,知道在不用数据库的情况下软件是怎样保存数据的,知道了链表的好处,也让我重新审阅了c。c贴近底层,可以更好地控制内存,可以利用它对系统做更多的东西,比如病毒,可惜这些都没教。这次的课程设计我第一次画了n-s图,但我是在做完这个项目之后才画的,所以这些图显得繁琐无比,没有起到帮助我理解程序的作用。希望老师能先指导我们画好流程图再来开发。 2、遇到的问题与解决方法编程的思想真是一理通百理明呀,我丢下c语言半年,编程的思想却一直没丢,一些算法

13、上的问题也能轻易解决。在一开始写排序函数时,发现升序排列没有问题,但降序排列时却出错(是数组值没有赋0的原因吗?),于是我把降序函数写成升序函数的倒序输出。第二个问题是在把链表赋值给结构体变量时出错。因为用c#时可以直接用“=”来赋值给字符串,但c则必须用strcpy()函数才可以。这个问题我请教了靠后才明白过来,后来我也见到了很多人在这个问题上出错,于是我便帮他们解决了。重名的情况。由于考虑的不周全,没有设计遇到重名的情况该怎么处理。3. 选择单一。我们设计的程序中,只设计了按名字选择,进行操作,忽略了重名的情况。整个程序完成了,还有很多不完善的地方,希望自己以后办事的时候要认真,仔细,考虑

14、周全。短短的三周课程设计结束了,但是这段时间里,我又学到了更多c 知识,如:对象数组,string类,文件流等,同时我也被提醒以后办事的时候要认真,仔细,考虑周全。也看到了团队精神和互帮互助的重要性。在此看来,同学之间的互助是很重要的。3、创新与得意之处 在此次实训中我总结出了自己的很多不足,虽然作为一个初出茅庐的学生我还是对自己的加解密程序做出了一些改进,首先就是是自己的程序简单明了,让人一看就明白,再次就是在程序运行中加入了语言提示,方便人们找出自己的错误并使程序运行透明化。此加密程序我才用了对称加密算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,同时解密密钥也可以从加密密

15、钥中推算出来。而在大多数的对称算法中,加密密钥和解密密钥是相同的,所以也称这种加密算法为秘密密钥算法或单密钥算法。它要求发送方和接收方在安全通信之前,商定一个密钥。对称算法的安全性依赖于密钥,泄漏密钥就意味着任何人都可以对他们发送或接收的消息解密,所以密钥的保密性对通信性至关重要。其次它是算法公开、计算量小、加密速度快、加密效率高。4、设计中存在的不足及改进的设想无法保存的n值是程序最大的bug,假如启动程序时没有调用“1”的函数来输入,则n值为0,想直接查看数据时会没有输出。暂时的解决方法是设计假如n为0,则默认输出前10个学生的数据。改进的设想是当程序要退出时,用一个文件把n值保存起来,重

16、新启动程序时,n得到上次保持的数,就可以不输入而直接输出上次保持的数了。另一个方法是永远不要结束这个程序。5体会心得在这两个星期里天气真的很热,但通过这两个星期的学习,我知道了实践才是最重要的。如果说第一天是摸索,第二天是创业,第三天是完善,第四天就是革命了!经过我的不段努力,一个又一个的问题在我的脑细胞下伏首称臣,一个又一个枷锁被我斩断,好象又获得了另一片天地,感到神情气爽,一坐又一坐高山被我征服,在欢庆胜利的喜悦的同时,我看着下面依然在不懈的奋斗中的同胞姐妹们,心里叫一个着急啊!我知道今天的努力就是明天的成功。我是经过自己的努力成功了,但在这可能是我终生难忘的,在这过程中我经历了风风雨雨,

17、经过了酸甜苦辣。有时为了一个未完成的程序,我甚至废寝忘食,在计算机楼整整呆了四五个小时,忍着千般痛苦就是为了自己的理想。有时为了一个不懂的问题,我几乎都踏平老师办公室的门槛了,可能老师有点烦了,但就是那种求知欲趋使我不断的去问问题。经管是这样,我还是有有些不懂,我还得经常去请教同学。就这样经过两周的时间我终于完成了自己的使命,真是感到高兴啊!实训结束在即,但是学习的路途依然漫长,“活到老,学到老”,这句话一直都游荡在我的脑海中。在现实社会中 知识是永无止境的,在知识中我们可以学习前人丰富的思想学识,我们可以熏陶自己的灵魂,我们可以增进自己的情感,我们可以了解到世界的宽广和伟大。我们必须发扬老一

18、辈无产阶级革命分子的不怕苦不怕累不怕精神疲惫的大无畏精神,为了能够毕业,为了学分,我们必须努力。通过此次c语言程序设计实践,本人实在是收获很多!c语言是去年开的课程,所以这个学期并没怎么看过,当要开始设计的时候,还真不知从哪下手!结果,第一次的上机,我傻坐着不知道该做什么,后来只看了看别人怎么做而已。回去以后,我想,这样不行,这样下去还得了!我就重新复习了一遍我们上个学期学习的内容,发觉自已有许多都遗忘了!特别是有文件的操作,几乎是一遍空白!温习过后,开始做题! 编程是一件很枯燥很无聊的事情,但是出于完成作业,得到学分的压力,还必须强破自己坚持下去,按照老师所说的模块化思想,分部分的进行编写。而且编程是一件高精度、模范化的事情,稍有疏乎都会影响全局,也可能因为某一处的小的错误而导致整个程序的无法运行。皇天不负有心人,经过四五天的编程

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论