版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、吉林工程技术师范学院c语言程序课程设计报告书设计题目: 数据加密解密 专业: 班级: 学生姓名: 学号: 指导教师: 2010年06月信息工程学院目 录摘 要 2第一章 绪 论 3 1 .1 c语言概述 3 1 .2 c语言出现的历史背景 3第二章 开发环境及相关技术的介绍4 2 .1 开发环境的介绍 4 2 .2 有关开发环境的技术 4第三章 总体设计与详细设计6 3 .1 本程序解决的有关技术问题 6 3 .2 本程序流程图9第四章 编码实现124 .1 程序的总体实现与使用方法12 4 .2 实现本程序的关键c技术 13第五章 调试与测试16第六章 总结与心得 19附录: 参考文献20源
2、代码21摘 要 作为保障数据安全的一种方式,对于信息的加密技巧起源于欧洲,公元前2000年,埃及人是最先使用象形文字作为信息编码的人。随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息(明文)。后来,被julias caesar(凯撒大帝)使用,也曾用于历次战争中,包括美国独立战争、美国内战和两次世界大战。最广为人知的编码机器是德国的german enigma,在第二次世界大战中德国人利用它创建了加密信息系统,从而解决军事信息的保密通讯问题。此后,由于alan turing和ultra计划以及其他工程技术人员的不泄努力,盟军终于对德国人的密码成功破译了,进而导致
3、第二次世界大战结束。当初,美国人对于计算机的研究,主要目的是用于破解德国人的通讯密码,这在当时,人们并没有意识到计算机技术此后的发展会影响世界历史进程,从而在全球引发了一场信息革命。随着计算机的发展,运算能力的增强,传统的密码知识和技能都变得十分简单了而很容易被人破解,于是人们又不断地研究出了新的数据加密方式,如私有密钥算法和公共密钥算法。可以说,是计算机技术的飞速发展在推动了数据加密技术的发展。尽管加密技术被首先使用在军事通信领域,但是人们或许出于安全的考虑,开始逐渐对于商业机密、政府文件等重要信息实施加密手段。数据加密应运而生。其基本原理是:对明文(可读懂的信息)进行翻译,使用不同的算法对
4、明文以代码形式(密码)实施加密。该过程的逆过程称为解密,即将该编码信息转化为明文的过程。从事数据加密研究的人称为密码编码者(cryptographer),而从事对密码解密的专业人士称为密码分析者(cryptanalyst)。如今数据加密技术被广泛地应用与国民经济各个领域,特别是政府机关和国防情报部门,此外才是科学研究机关、商业部门、新闻出版、金融证券、交通管制与电力输送等部门。而c语言程序设计教学不仅仅局限于使学生单纯地了解和掌握 c 语言的基本语法规范,而是要致力于培养学生运用 c 语言解决实际问题的编程能力。c语言程序设计教学方法的改革让学生从多角度、以多方式去了解和掌握 c 语言以及程序
5、设计的精髓,着重培养学生无论以后在学习、工作中使用什么语言编程,都能灵活应用这些思想和方法的能力。关键字:数据加密,数据解密,加密,解密第一章 绪 论1.1 c语言概述c语言是国际上广泛流行且很有发展前途的计算机高级语言,不仅用来编写应用软件,也用来编写系统软件。c语言功能丰富,使用灵活,可移植性好,深受广大用户欢迎。c语言的数据类型丰富,既具有高级程序设计语言的优点,又具有低级程序设计语言的特点;既可以用来编写系统程序,又可以用来编写应用程序。(例如,著名的unix操作系统就是用c语言编写的)因此,c语言正在被迅速地推广和普及。1 .2 c语言出现的历史背景在c语言诞生以前,操作系统及其他系
6、统软件主要是用汇编语言实现的。由于汇编语言程序设计依赖于计算机硬件,其可读性和可移植性都很差,而一般的高级语言又难以实现对计算机硬件的直接操作,因此人们需要一种兼有汇编语言和高级语言特性的语言。c语言就是在这种环境下产生的。它最早是由dennis richie于1973年设计并实现。它的产生同unix系统之间具有非常密切的联系c语言是在unix系统上开发的。而无论unix系统本身还是其上运行的大部分程序,都是用c语言编写实现。同时,它同样适合于编写不同领域中的大多数程序。c语言已经成为全球程序员的公共语言,并且由此产生了当前两个主流的语言c+和java它们都建立在c语言的语法和基本结构的基础上
7、,而且现在世界上的许多软件都是在c语言及其衍生的各种语言的基础上开发而成。 目前,在微机上广泛使用的c语言编译系统有turbo c、borland c+、microsoft visual c+等。虽然它们的基本部分都是相同的,但还是有一些差异,本程序的设计采用turbo c作为上机编程调试环境。第二章 开发环境及相关技术的介绍2 .1 开发环境的介绍在c语言诞生以前,操作系统及其他系统软件主要是用汇编语言实现的。由于汇编语言程序设计依赖于计算机硬件,其可读性和可移植性都很差,而一般的高级语言又难以实现对计算机硬件的直接操作,因此人们需要一种兼有汇编语言和高级语言特性的语言。c语言就是在这种环境
8、下产生的。它最早是由dennis richie于1973年设计并实现。它的产生同unix系统之间具有非常密切的联系c语言是在unix系统上开发的。而无论unix系统本身还是其上运行的大部分程序,都是用c语言编写实现。同时,它同样适合于编写不同领域中的大多数程序。c语言已经成为全球程序员的公共语言,并且由此产生了当前两个主流的语言c+和java它们都建立在c语言的语法和基本结构的基础上,而且现在世界上的许多软件都是在c语言及其衍生的各种语言的基础上开发而成。 目前,在微机上广泛使用的c语言编译系统有turbo c、borland c+、microsoft visual c+等。虽然它们的基本部分
9、都是相同的,但还是有一些差异,本程序的设计采用turbo c作为上机编程调试环境。2 .2 有关开发环境的技术c语言的特点:1. 简洁紧凑,灵活方便c语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示.它把高级语言的基本结构和语句与低级语言的实用性结合起来. c 语言可以象汇编语言一样对位,字节和地址进行操作, 而这三者是计算机最基本的工作单元.2. 运算符丰富 c的运算符包含的范围很广泛,共有种34个运算符.c语言把括号,赋值,强制类型转换等都作为运算符处理.从而使c的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算.3. 数据
10、结构丰富c的数据类型有:整型,实型,字符型,数组类型,指针类型,结构体类型,共用体类型等.能用来实现各种复杂的数据类型的运算.并引入了指针概念,使程序效率更高.另外c语言具有强大的图形功能, 支持多种显示器和驱动器.且计算功能,逻辑判断功能强大. 4. c是结构式语言结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立.这种结构化方式可使程序层次清晰, 便于使用,维护以及调试.c语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环,条件语句控制程序流向,从而使程序完全结构化. 5. c语法限制不太严格,程序设计自由度大 一般的高级语言语法检查比较
11、严,能够检查出几乎所有的语法错误.而c语言允许程序编写者有较大的自由度.6. c语言允许直接访问物理地址,可以直接对硬件进行操作因此既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位,字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件. 7. c语言程序生成代码质量高,程序执行效率高 一般只比汇编程序生成的目标代码效率低1020%.8. c语言适用范围大,可移植性好c语言有一个突出的优点就是适合于多种操作系统, 如dos,unix,也适用于多种机型.c#和.net平台的概貌c语言的缺点:1. c语言的缺点主要是表现在数据的封装性上,这一点使得c语言在数
12、据的安全性上做的有很大缺陷,这也是c和c+的一大区别。 2. c语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,c语言比其他高级语言较难掌握。第三章 总体设计与详细设计3 .1 本程序解决的有关技术问题本程序是一款小型的数据加密解密软件。数据加密是计算机网络安全很重要的一个部分。由于因特网身的不安全性,我们不仅对口令进行加密,有时也对在网上传输的文件进行加密。为了保证电子邮件的安全,人们采用了数字签名这样的加密技术,并提供基于加密的身份认证技术。数据加密也使电子商务成为可能。一、密码技术密码学是保密学的一部分。保密学是研究密码系统或通信
13、安全的科学,它包括两个分支:密码学和密码分析学。密码学是对信息进行编码实现隐蔽信息的一门学问。密码分析学是研究分析破译密码的学问。两者相互独立,而又相互促进,正如病毒与反病毒技术一样。采用密码技术可以隐藏和保护需要保密的消息,使未授权者不能提取信息。需要隐藏的消息称为明文。明文被变换成另一种隐藏形式就称为密文。这种变换称为加密。加密的逆过程,即从密文恢复出明文的过程称为解密。对明文进行加密时采用的一组规则称为加密算法。对密文解密时采用的一组规则称为解密算法。加密算法和解密算法通常都是在一组密钥控制下进行的,密钥决定了从明文到密文的映射,加密算法所使用的密钥称为加密密钥,解密算法所使用的密钥称为
14、解密密钥。二、密码体制分类密码体制通常从三个独立的方面进行分类:(1)按明文到密文的转换操作可分为:置换密码和易位密码。所有加密算法都是建立在两个通用原则之上:置换和易位。(2)按明文的处理方法可分为:分组密码和序列密码。(3)按密钥使用个数可分:对称密码体制,非对称密码体制。置换密码:是将明文的每个元素(比特、字母、比特或字母的组合)映射到其他元素。易位密码:是对明文的元素进行重新布置。分组密码:的加密方式是首先将明文序列以固定长度进行分组,每一组明文用相同的密钥和加密函数进行运算。 分组密码设计的核心上构造既具有可逆性又有很强的线性的算法。 序列密码:的加密过程是将报文,话音,图象,数据等
15、原始信息转化成明文数据序列,然后将它同密钥序列进行异或运算。生成密文序列发送给接受者。 对称密码体制:如果发送方使用的加密密钥和接受方使用的解密密钥相同,或从其中一个密钥易于的出另一个密钥,这样的系统叫做对称的,但密钥或常规加密系统。非对称密码体制:如果发送方使用的加密密钥和接受方使用的解密密钥不相同,从其中一个密钥难以推出另一个密钥,这样的系统就叫做不对称的,双密钥或公钥加密系统。三、数据加密技术分类(1)对称型加密,(2)不对称型加密(3)不可逆加密。 对称加密:使用单个密钥对数据进行加密或解密。 不对称加密:算法也称为公开加密算法,其特点是有两个密钥,只有两者搭配使用才能完成加密和解密的
16、全过程。 不可逆加密算法:特征是加密过程不需要密钥,并且经过加密的数据无法被解密,只有同样输入的输入数据经过同样的不可逆算法才能得到同样的加密数据。 从通信网络的传输方面,数据加密技术可以分为3类:(1)链路加密方式,(2)节点到节点方式(3)端到端方式。 链路加密方式:是一般网络通信安全主要采用的方式。 节点到节点加密方式:是为了解决在节点中数据是明文的缺点,在中间节点里装有加,解密的保护装置,由这个装置来完成一个密钥向另一个密钥的变换。 端到端方式:在端到端机密方式中,由发送方加密的数据在没有到达最终目的节点之前是不被解密的。四、密码分析 试图发现明文或密钥的过程叫做密码分析。也就是同常所
17、说的密码破译。密码分析人员使用的策略取决于加密方案的特性和分析人员可用信息。密码分析过程通常包括:分析、假设、推断和证实等步骤。 (下表为各种加密消息破译类型)加密消息破译类型破译类型密码分析人员以知的内容仅密文加密算法要解密的密文已知密文加密算法要解密的密文使用保密密钥生成的一个或多个明文一密文对选择明文加密算法要解密的密文密码分析人员选择的明文消息,以及使用保密密钥声成的对应的密文对选择密文加密算法要解密的密文密码分析人员选择的密文,以及使用保密密钥声成的对应的解密明文选择文本加密算法要解密的密文密码分析人员选择的明文消息,以及使用保密密钥声成的对应的密文对密码分析人员选择的密文,以及使用
18、保密密钥声成的对应的解密明文 寻找密钥所需的平均时间密钥为数密钥数目1次解密/s所需的时间106次解密/s所需的时间32232=4.3*109231s=35.8分钟2.15毫秒56256=7.2*1016255s=1142年10小时1282128=4.3*10382127s=5.4*1024年5.4*1018年1682168=3.7*10592167s=5.4*1036年5.4*1030年3 .2 本程序流程图开始printf(.);printf(.);while (1)输出菜单choice=getch();case3:exit(0);break;encrypt()int i,lg,f1,f2
19、,f3.switch(choice)int i,lg,f1,f2,f3.default:printf(.getch();int x=13,y=7;char choice;case1:encrypt();break;case2:decipher();break;decipher()scanf(%s,sec);nynyif(i4)for(i=0;ilg/2;i+)c=seci;seci=seclg-i-1;seclg-i-1=c;c=seci;seci=seclg-i-1;seclg-i-1=c;for(i=0;ilg;i+)c=seci;seci=(char)(int)c+i+1);c=seci
20、;seci=(char)(int)c+i+1);ilg/2ilg/2if(i4)seci=f1;seci=f3;f1=f2;f2=f3;f3=f1+f2;seci=f3;f1=f2;f2=f3; f3=f1+f2;for(i=0;ilg/2;i+)scanf(%s,sec);for(i=0;ilg;i+)seci=f1;getchar(); printf(n note.n);getch();printf(proclaimedin . );printf(proclaimedin . );for(i=0;ilg;i+)printf(%c,seci);返回case 1 后的break返回case 2
21、 后的break结束for(i=0;ilg;i+)printf(%c,seci);getchar(); printf(n note.n);getch();第四章 编码实现4 .1 程序的总体设计与使用方法本程序是针对数据加密解密技术设计的一款数据加密解密软件,它能对用户的密码进行算法逻辑上的加密。运行程序后,用户会看到一给非常友好的界面菜单,有3个选项可供选择。第一个是数据加密,第二个是数据解密,第三个是退出。这时,系统会提示用户去做选择。turbo c上显示的主菜单界面(这里是汉文实际英文)= 欢迎使用数据加密解密软件 = 1.进行数据加密 2.进行数据解密 3.退出请选择13 进行操作=
22、当用户选择第一个数据加密时,系统会提示用户输入小于16位的明文密码,用户把想要转换成密文的密码输入,按回车结束。这时,系统会透过自身的密钥加密算法自动将转换好的密文告诉用户,用户可以牢牢地记住,也可以选择把它记到纸上。按任意键可返回主菜单。进入数据加密界面:请输入16位以下明文:xxxxxx明文数据加密后的密文:xxxxxx密文按任意键返回主菜单!当用户选择第二个数据解密时,系统会提示用户输入小于16位的密文,此次输入的是用户刚刚通过本程序加密后得到的密文,而不再是用户自己的密码,是把它输入进去后,系统会通过自身的密钥解密算法自动将转换好的明文告诉用户,用户可以自行验证。进入数据解密界面:请输
23、入16位以下密文:xxxxxx密文数据解密后的明文:xxxxxx明文按任意键返回主菜单当用户选择第三个退出时,退出本程序。(程序的关键在于密钥)4 .2 实现本程序的关键c技术本程序主要运用的系统函数:gotoxy函数功能:将光标移动到指定位置说明,y行和x列;gotoxy(0,0)将光标移动到屏幕左上角。main() int x=13,y=7; gotoxy(x,y);puts();gotoxy(x,y+1);printf();gotoxy(x,y+2);此程序段运用gotoxy函数实现一个位于屏幕中央的菜单界面。下面的就是加密与解密技术encrypt() char secn,c; int
24、i,lg,f1,f2,f3; f1=f2=1;f3=f1+f2; scanf(%s,sec); lg=strlen(sec); for(i=0;ilg/2;i+) c=seci; seci=seclg-i-1; seclg-i-1=c; for(i=0;ilg;i+) c=seci; seci=(char)(int)c+i+1); if(i4) seci=f1; else seci=f3; f1=f2; f2=f3; f3=f1+f2; deciphering() char secn,c; int i,lg,f1,f2,f3; f1=f2=1;f3=f1+f2; scanf(%s,sec);
25、lg=strlen(sec); for(i=0;ilg;i+) if(i4) seci=f1; else seci=f3; f1=f2; f2=f3; f3=f1+f2; c=seci; seci=(char)(int)c-i-1); for(i=0;ilg/2;i+) c=seci; seci=seclg-i-1; seclg-i-1=c; 第五章 调试与测试1.程序运行后,会出现一个友好的界面,供用户选择。2.当用户输入1要进行数据加密时,显示的界面,程序会提示用户输入字符并且不要超过16个。3.当用户输入需要加密的明文后,经过内置的算法,程序会把其对应的密文告诉用户。4.当用户选择2数据
26、解密时出现的界面,程序会提示用户输入需要解密的密文并且不要超过16个。5当用户输入需要解密的密文后,经过内置的算法,程序会把解密后其对应的明文告诉用户。第六章 总结与心得课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。这是一款数据加密解密软件,它能对你的密码进行加密。有的时候,在我们输入密码时,很容易被别人看到,就算是看不到,都用星号来代替它们,盗密码者也能通过一些手段,将其破译。
27、我就有过这样一段经历。我比较喜欢上网,在网吧输入qq号和qq密码不久,就提示我我的qq号在其他地方已经登陆,这让我百思不得其解,不过我现在明白了,也许qq这款软件给我的密码加密了,不过被盗密码者给破译了,也许qq它根本就没有给我的密码加密被盗密码这监听到了。总之,我的密码是泄露了。那一次让我损失了不少,也让我明白了数据加密的道理。今天,借着这个课程设计的机会,我亲自做一款数据加密解密的小软件,小程序,我知道虽然我的小软件现在在任何场所任何地方都派不上用场,不过我相信,总有一天会的!回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个学期的日子里,可以
28、学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后,一定把以前所学过的知识重新温故。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题
29、,最后在老师的辛勤指导下,终于游逆而解。同时,在老师的身上我学得到很多实用的知识,在次我表示感谢!同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 附 录:参考文献1.全国计算机登记考试二级教程c预言程序设计 高等教育出版社 田树青2.c程序设计(第三版) 清华大学出版社 谭浩强3.c语言程序设计 清华大学出版社 郭有强附 录:源代码#include#include#define n 16main() int x=13,y=7; char choice; randomize(); while(1) clrscr(); gotoxy(x,y);puts(=); gotoxy(x,y
30、+1); printf(welcome to useing data encryption deciphering software); gotoxy(x,y+2);puts(=); gotoxy(x,y+3); puts(1.carry out the data encryption); gotoxy(x,y+4); puts(2.carry out the data deciphering.); gotoxy(x,y+5); puts(3.exit.); gotoxy(x,y+7); puts(choose operation please 1 to 3.); gotoxy(x,y+9);puts(=); choice=getch(); switch(choice) case 1:encrypt();break; case 2:deciphering();break; case 3:exit(0);break; default:printf(choose a mistake!
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- DB51T 1620-2013 政务服务中心 服务质量评价及改进
- DB51T 1028-2010 长根菇生产技术规程
- 新建糯玉米粉项目立项申请报告
- 新建手钩圆领手钩袖套头衫项目立项申请报告
- 壁挂机投资规划项目建议书
- 新建氯氧化锆项目立项申请报告
- 新建锌铝压铸件项目立项申请报告
- 气压检测仪生产加工项目可行性研究报告
- 2024-2030年新版中国钢结构蓬项目可行性研究报告
- 2024-2030年新版中国偏焦式太阳灶项目可行性研究报告
- 《企业采购成本控制现状、问题及对策研究-以伊利乳业集团为例(论文)10000字》
- 中华医学会杂志社作者贡献声明
- 《物理学之美 插图珍藏版 》读书笔记思维导图PPT模板下载
- 国开电大本科《人文英语4》机考总题库珍藏版
- 腮腺疾病围手术期护理查房
- 学生假期安全承诺书200字(5篇)
- 血液透析个案护理两篇
- GB/T 37814-2019综采综放工作面远距离供电系统技术规范
- 高中通用技术《技术试验及其方法》公开课课件
- PSSR试车前的安全检查
- 防火防爆安全技术课件
评论
0/150
提交评论