C语言加密解密课程设计报告

合集下载

c语言文件加密课程设计

c语言文件加密课程设计

c语言文件加密课程设计一、课程目标知识目标:1. 让学生掌握C语言文件操作的基本知识,包括文件的打开、读写和关闭。

2. 让学生理解加密算法的基本原理,如移位密码、替代密码等。

3. 使学生能够运用C语言实现简单的文件加密和解密功能。

技能目标:1. 培养学生运用C语言解决问题的能力,特别是文件处理和加密解密操作。

2. 提高学生的逻辑思维能力,使其能够分析并设计简单的加密算法。

3. 培养学生团队合作和沟通能力,通过小组合作完成课程设计。

情感态度价值观目标:1. 培养学生对待信息安全的态度,提高对数据保护的意识。

2. 激发学生对编程的兴趣,培养其探究精神,勇于尝试和克服困难。

3. 培养学生遵守法律法规,养成良好的道德品质,不滥用加密技术。

课程性质:本课程为实践性较强的课程设计,要求学生将所学的C语言知识运用到实际项目中,实现文件加密和解密功能。

学生特点:学生已经掌握了C语言基础知识和基本的文件操作,但可能对加密算法了解不多。

教学要求:教师应引导学生通过小组合作、自主探究等方式,将理论知识与实践相结合,培养学生的动手能力和创新能力。

同时,注重培养学生的安全意识和道德品质。

在教学过程中,将课程目标分解为具体的学习成果,以便于教学设计和评估。

二、教学内容1. 文件操作基础知识:- 文件的打开、关闭、读写等基本操作。

- 文件指针的概念和使用。

- 课本相关章节:第三章文件操作。

2. 加密算法原理:- 常见加密算法的原理,如移位密码、替代密码等。

- 加密算法的C语言实现方法。

- 课本相关章节:第七章算法设计与分析。

3. 文件加密与解密实现:- 设计并实现一个简单的文件加密程序。

- 设计并实现一个对应的文件解密程序。

- 课本相关章节:第八章C语言应用实例。

4. 课程设计实践:- 分组讨论,确定加密算法和实现方案。

- 编写代码,实现文件加密和解密功能。

- 测试并优化程序,确保其稳定性和安全性。

5. 教学进度安排:- 第一周:复习文件操作基础知识,介绍加密算法原理。

c语言文件加密解密课程设计

c语言文件加密解密课程设计

c语言文件加密解密课程设计一、课程目标知识目标:1. 学生能理解C语言文件操作的基本原理,掌握文件读写的基本函数。

2. 学生能掌握基础的加密解密算法,并运用C语言实现文件的加密解密功能。

3. 学生了解加密解密技术在生活中的应用及其重要性。

技能目标:1. 学生能够独立编写C语言程序,实现对文本文件的加密和解密。

2. 学生能够运用调试工具对程序进行调试,解决常见的错误和异常。

3. 学生能够通过小组合作,共同完成一个文件加密解密项目,提高团队协作能力。

情感态度价值观目标:1. 学生培养对编程和信息安全领域的兴趣,激发学习主动性和探究精神。

2. 学生在课程学习过程中,增强解决问题的信心,培养面对困难的勇气和毅力。

3. 学生认识到信息安全的重要性,树立正确的网络安全观念,遵循道德规范,不参与非法破解活动。

课程性质:本课程为C语言高级应用课程,通过项目实践,帮助学生将所学知识应用于实际场景,提高编程能力和信息安全意识。

学生特点:学生已经掌握了C语言基础知识,具有一定的编程能力和逻辑思维能力,但对信息安全领域了解较少。

教学要求:注重理论与实践相结合,引导学生通过动手实践,掌握文件加密解密技术,提高学生的编程技能和信息安全素养。

同时,关注学生的个体差异,鼓励学生积极参与,发挥团队协作精神。

通过课程学习,实现以上具体的学习成果。

二、教学内容1. 文件操作基础:回顾C语言中文件操作的相关知识,重点掌握fopen、fprintf、fscanf、fclose等函数的使用方法,理解文件读写的过程。

教材章节:第三章 文件操作2. 加密解密原理:介绍基础的加密解密算法,如异或加密、移位加密等,分析算法原理,并通过示例代码展示算法实现。

教材章节:第十章 安全编程3. C语言实现加密解密:运用所学的加密解密原理,使用C语言编写程序,实现对文本文件的加密和解密功能。

教材章节:第十章 安全编程4. 调试与优化:教授学生如何使用调试工具,如GDB,对程序进行调试,找出并解决常见错误和异常,提高程序稳定性。

C语言文件加密解密报告

C语言文件加密解密报告

C语言文件加密解密报告文件加密解密的报告一、引言在现代信息技术的发展下,计算机与互联网的普及使得信息传输变得越来越方便快捷。

然而,随之而来的问题是数据的安全性问题,特别是在文件传输和存储的过程中。

为了保护敏感信息的安全,人们积极探索各种加密解密算法,以确保数据的机密性和完整性。

本报告将介绍一种基于C语言的文件加密解密算法。

二、文件加密解密算法的设计与实现1.设计思路文件加密解密的基本思路是将原始文件中的数据进行转换和替代,使之变得不可读或难以解读。

加密后的文件只有通过解密算法才能还原为原始文件。

本算法的设计思路是基于对文件数据进行异或运算,以实现简单而高效的加密解密过程。

2.加密算法的实现加密算法的实现主要包含以下几个步骤:(1)以二进制方式读取原始文件;(2)生成一个密钥,通过用户输入或通过随机数生成;(3)对原始文件中的每个字节进行异或运算,将结果写入加密文件中;(4)关闭文件。

3.解密算法的实现解密算法的实现与加密算法相似,只需将密钥再次进行异或运算即可还原出原始文件。

三、算法性能测试与分析1.测试环境本算法在Windows 10操作系统下使用C语言编写并编译运行。

2.测试过程与结果我们选择了一个500KB大小的文本文件进行测试。

在加密过程中,我们使用一个16位的密钥,该密钥由用户输入的任意字符串生成。

在解密过程中,用户需要输入相同的密钥以还原文件。

测试结果显示,加密解密过程均在秒级完成,且文件大小、内容没有发生变化,证明了算法的正确性和高效性。

此外,我们进行了多组重复测试,结果一致,进一步验证了算法的可靠性。

四、安全性与优化改进1.安全性分析本算法基于简单的异或运算,相对于其他复杂的加密算法可能存在一定的安全性问题。

由于密钥长度有限,加密文件的安全性取决于密钥的复杂度和保密性。

2.优化改进可以进一步提升算法的安全性和效率:(1)提供更复杂的密钥生成方式,增加密钥的复杂度;(2)使用更复杂的异或运算方式,如多重异或运算;(3)引入其他加密算法的组合使用,如DES、AES等。

c语言课程设计加密与解密

c语言课程设计加密与解密

c语言课程设计加密与解密一、教学目标通过本章的学习,学生将掌握C语言加密与解密的基本概念和方法,理解加密与解密的技术原理,能够运用C语言实现简单的加密和解密功能。

1.理解加密与解密的概念及其在计算机安全中的应用。

2.掌握C语言的基本数据类型和运算符。

3.掌握C语言的函数和数组。

4.能够使用C语言编写简单的加密和解密程序。

5.能够分析C语言程序的运行结果,并对其进行调试和优化。

情感态度价值观目标:1.培养学生对计算机安全的认识,提高其对加密与解密技术的重视。

2.培养学生解决问题的能力和创新思维,激发其对C语言编程的兴趣。

二、教学内容本章的教学内容主要包括C语言的基本概念、数据类型、运算符、函数和数组,以及加密与解密的技术原理和实现方法。

1.C语言的基本概念:介绍C语言的历史和发展,理解C语言的特点和优势。

2.数据类型和运算符:掌握基本的数据类型(整型、浮点型、字符型等)和运算符(算术运算符、关系运算符、逻辑运算符等),能够正确使用它们进行编程。

3.函数和数组:理解函数的定义和调用,掌握数组的声明和使用,能够利用函数和数组实现简单的加密和解密功能。

4.加密与解密的技术原理:学习加密与解密的基本概念,了解常见的加密算法(如DES、AES等)和解密算法,理解加密与解密的技术原理和流程。

5.加密与解密的实现方法:学习使用C语言实现简单的加密和解密功能,掌握加密和解密的编程技巧,能够分析和调试程序,优化程序的性能和安全性。

三、教学方法本章的教学方法主要包括讲授法、案例分析法和实验法。

1.讲授法:通过讲解C语言的基本概念、数据类型、运算符、函数和数组,以及加密与解密的技术原理和实现方法,使学生掌握相关的知识和技能。

2.案例分析法:通过分析典型的加密和解密案例,使学生理解加密与解密的应用和实际意义,培养学生的分析和解决问题的能力。

3.实验法:通过编写和调试C语言程序,使学生掌握加密和解密的编程技巧,提高学生的实际操作能力和创新思维。

c语言文本加密解密课程设计

c语言文本加密解密课程设计

c语言文本加密解密课程设计一、课程目标知识目标:1. 让学生掌握C语言中字符类型及其运算,特别是字符与ASCII码之间的关系。

2. 使学生理解文本加密解密的基本原理,包括对称加密算法中异或运算的应用。

3. 引导学生掌握使用C语言进行简单文本加密解密程序的编写。

技能目标:1. 培养学生运用C语言进行字符处理的能力,包括字符串的读取、修改和输出。

2. 培养学生将理论知识应用到实际编程中,解决文本加密解密问题的能力。

3. 提高学生的逻辑思维能力和问题解决能力,通过编程实践,学会调试和优化程序。

情感态度价值观目标:1. 培养学生对编程的兴趣和热情,增强学习C语言的自信心。

2. 引导学生认识到信息安全的重要性,提高网络安全意识。

3. 培养学生的团队合作精神,学会在编程过程中互相帮助、共同进步。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握C语言基础知识和技能的基础上,通过学习文本加密解密,将理论知识与实践相结合,提高编程能力和信息安全意识。

课程目标具体、可衡量,便于后续教学设计和评估。

二、教学内容1. C语言基础知识回顾:字符类型及其ASCII码表示,字符串处理基础。

2. 文本加密解密原理:介绍对称加密基本概念,重点讲解异或运算在文本加密解密中的应用。

3. 编程实践:- 简单文本加密程序设计:使用C语言实现字符异或加密。

- 简单文本解密程序设计:使用C语言实现字符异或解密。

4. 教学案例分析与讨论:分析教材中相关的案例,讲解加密解密程序的设计思路和实现步骤。

5. 课堂练习:设计具有实际意义的加密解密任务,让学生动手实践,巩固所学知识。

教学内容安排和进度:第一课时:C语言基础知识回顾,文本加密解密原理介绍。

第二课时:编程实践——简单文本加密程序设计。

第三课时:编程实践——简单文本解密程序设计。

第四课时:教学案例分析与讨论,课堂练习。

教学内容与教材关联性:1. C语言基础知识:参考教材第1章至第3章内容。

c语言课程设计—数据加密解密

c语言课程设计—数据加密解密

吉林工程技术师范学院《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)第四章编码实现 (12)4 .1 程序的总体实现与使用方法 (12)4 .2 实现本程序的关键C技术 (13)第五章调试与测试 (16)第六章总结与心得 (19)附录: 参考文献 (20)源代码 (21)摘要作为保障数据安全的一种方式,对于信息的加密技巧起源于欧洲,公元前2000年,埃及人是最先使用象形文字作为信息编码的人。

随着时间推移,巴比伦、美索不达米亚和希腊文明都开始使用一些方法来保护他们的书面信息(明文)。

后来,被Julias Caesar(凯撒大帝)使用,也曾用于历次战争中,包括美国独立战争、美国内战和两次世界大战。

最广为人知的编码机器是德国的German Enigma,在第二次世界大战中德国人利用它创建了加密信息系统,从而解决军事信息的保密通讯问题。

此后,由于Alan Turing和Ultra计划以及其他工程技术人员的不泄努力,盟军终于对德国人的密码成功破译了,进而导致第二次世界大战结束。

当初,美国人对于计算机的研究,主要目的是用于破解德国人的通讯密码,这在当时,人们并没有意识到计算机技术此后的发展会影响世界历史进程,从而在全球引发了一场信息革命。

随着计算机的发展,运算能力的增强,传统的密码知识和技能都变得十分简单了而很容易被人破解,于是人们又不断地研究出了新的数据加密方式,如私有密钥算法和公共密钥算法。

可以说,是计算机技术的飞速发展在推动了数据加密技术的发展。

文件加密c语言课程设计

文件加密c语言课程设计

文件加密c语言课程设计一、课程目标知识目标:1. 理解文件加密的基本概念,掌握C语言实现文件加密的原理;2. 学会使用C语言标准库进行文件操作,掌握字符编码转换方法;3. 掌握常见的加密算法及其在C语言中的实现方法。

技能目标:1. 能够独立编写C语言程序,实现文件的加密与解密功能;2. 能够运用所学知识解决实际文件安全保护问题,提高编程实践能力;3. 能够通过课程学习,培养良好的编程习惯和解决问题的方法。

情感态度价值观目标:1. 培养学生对信息安全保护的认识,增强网络安全意识;2. 激发学生对编程的兴趣,提高学习积极性和主动性;3. 培养学生的团队协作精神,学会与他人分享编程经验和成果。

课程性质:本课程为计算机科学与技术专业的选修课程,侧重于实践操作和实际应用。

学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础。

教学要求:结合课程性质和学生特点,注重理论与实践相结合,强调实际操作,培养学生的实际编程能力和解决问题的能力。

通过课程学习,使学生能够将所学知识应用于实际项目中,提高学生的综合素养。

二、教学内容1. 文件加密基础理论:介绍文件加密的概念、作用和分类,结合课本相关章节,理解加密技术在信息安全中的应用。

- 加密算法原理:学习对称加密和非对称加密的原理,了解其优缺点。

- 文件加密技术:分析常见文件加密技术,如AES、DES、RSA等。

2. C语言文件操作:复习C语言文件操作相关知识,包括文件的打开、读取、写入和关闭。

- 文件处理函数:学习使用fopen、fread、fwrite、fclose等标准库函数。

- 字符编码转换:介绍字符编码转换方法,实现不同编码文件的处理。

3. 加密算法的C语言实现:根据课本内容,学习并实践以下加密算法的C语言实现。

- 对称加密算法:以AES为例,实现文件加密与解密功能。

- 非对称加密算法:以RSA为例,实现文件加密与解密功能。

4. 实践项目与案例分析:布置实践项目,让学生动手实践文件加密与解密功能,并结合实际案例进行分析。

C语言课程设计(RSA加密算法)报告

C语言课程设计(RSA加密算法)报告

C语言课程设计一、设计内容RSA加密算法二、设计目的1)通过完成具有一定难度的题目,使自己能够将课本上的理论知识和具体问题有机地结合起来,锻炼自己分析问题、解决问题的能力,提高编程能力;2)通过完成一些需要查阅相关资料才能做的题目,提高自己的自学习能力和创新能力。

三、设计思路(包括所用的函数)RSA的公钥、私钥的组成,以及加密、解密的公式可见于下表:主函数实现求n的欧拉数, 由公钥求解私钥, 加密解密选择以及相应的密文明文输出。

candp 实现加密解密时的求幂取余运算,子函数fun 实现e 与t 的互素判断,以验证e 是否符合要求prime实现一个素数的判断,以验证输入的数是否为素数四、程序代码#include <stdio.h>#include <math.h>void main(){int candp(int a,int b,int c);//函数声明int fun(int x,int y);//函数声明int prime(int m);//函数声明int p;int q;int e;int d;int m;int n;int t;int c;int r;printf("请输入两个素数p,q: ");scanf("%d,%d",&p,&q);for(;p>0,q>0;)//for循环判断p和q是否同时为素数{if(prime(p)&&prime(q)){break;}elseprintf("输入有误,请重新输入:");scanf("%d,%d",&p,&q);}n=p*q;printf("计算得n为%d\n",n);t=(p-1)*(q-1); //求n 的欧拉数printf("计算得t为%d\n",t);printf("请输入一个与t互素的数,即公钥e: ");scanf("%d",&e);for(;e>1,e<t;){if(e<=1||e>=t||fun(e,t)){printf("e不合要求,请重新输入: ");//e<1 或e>t 或e 与t 不互素时,重新输入scanf("%d",&e);}elsebreak;}d=1;while(((e*d)%t)!=1)d++; //由公钥e 求出私钥dprintf("经计算d 为%d\n",d);printf("加密请输入1\n"); //加密或解密选择printf("解密请输入2\n");scanf("%d",&r);switch(r){case 1: printf("请输入明文m: "); //输入要加密的明文数字scanf("%d",&m);c=candp(m,e,n);printf("密文为%d\n",c);break;case 2: printf("请输入密文c: "); //输入要解密的密文数字scanf("%d",&c);m=candp(c,d,n);printf("明文为%d\n",m);break;}}int candp(int a,int b,int c)//数据处理函数,实现幂的取余运算{int z;z=1;b=b+1;while(b!=1){z=z*a;z=z%c;b--;}printf("%d\n",z);return z;}int fun(int x,int y) //公钥e 与t 的互素判断{int s;while(y){s=x;x=y;y=s%y;}if(x == 1)return 0; //x 与y 互素时返回0 elsereturn 1; //x 与y 不互素时返回1}int prime(int m)//判断一个数是否为素数{int i;int n;if(m==1)return 0;n=(int)sqrt(m);for(i=2;i<=n;i++)if(m%i==0)return 0;elsereturn 1;}五、运行结果当P=43, q=59 时,对134 进行加密,运行结果如下:六、分析与讨论从对RSA算法的一无所知到现在运行处的结果,中间经过查询各种资料,我们的努力还是有收获的,运行结果基本上还令人满意。

c加密解密课程设计

c加密解密课程设计

c 加密解密课程设计一、课程目标知识目标:1. 让学生理解加密解密的基本概念,掌握常用的加密算法原理,如Caesar密码、DES、AES等。

2. 使学生掌握C语言实现加密解密算法的方法,了解加密解密技术在信息安全中的应用。

3. 帮助学生了解我国信息安全政策及法律法规,增强信息安全意识。

技能目标:1. 培养学生运用C语言编写加密解密程序的能力,提高编程实践操作技能。

2. 培养学生分析、解决实际信息安全问题的能力,能够针对特定场景选择合适的加密算法。

情感态度价值观目标:1. 培养学生对信息安全领域的好奇心和求知欲,激发学生学习兴趣。

2. 增强学生的团队协作意识,培养良好的沟通与表达能力。

3. 培养学生遵守网络道德规范,自觉维护网络信息安全,具备良好的社会责任感。

课程性质:本课程为信息技术学科,旨在让学生掌握C语言编程在加密解密领域的应用,提高学生的信息安全意识。

学生特点:学生具备一定的C语言基础,对编程有一定的兴趣,但对加密解密技术了解较少。

教学要求:结合学生的特点和实际情况,采用案例教学、任务驱动等方法,引导学生主动参与课堂,注重理论与实践相结合,提高学生的实际操作能力。

通过本课程的学习,使学生能够独立编写简单的加密解密程序,并具备一定的信息安全素养。

二、教学内容1. 加密解密基本概念:介绍加密解密的定义、作用和分类,结合课本相关章节,让学生了解加密解密技术的基本原理。

- 加密算法:Caesar密码、DES、AES等。

- 解密算法:针对上述加密算法的逆运算。

2. 常用加密算法原理及实现:- 详细讲解Caesar密码、DES、AES等算法原理,结合教材案例分析。

- 引导学生运用C语言实现上述加密算法,加强编程实践。

3. 信息安全法律法规与道德规范:- 介绍我国信息安全政策及法律法规,提高学生的信息安全意识。

- 引导学生遵循网络道德规范,维护网络信息安全。

4. 加密解密技术应用:- 分析加密解密技术在现实生活中的应用场景,如通信、支付等。

c语言加密课程设计

c语言加密课程设计

c语言加密课程设计一、课程目标知识目标:1. 理解加密的概念,掌握C语言基本的加密算法原理及应用;2. 学会使用C语言实现常用的加密算法,如凯撒密码、异或加密等;3. 掌握加密和解密程序的设计方法,理解密钥在加密过程中的作用;4. 了解计算机安全基础知识,提高信息安全意识。

技能目标:1. 能够运用所学加密算法编写C语言程序,实现简单文本的加密和解密;2. 培养学生的编程实践能力,提高问题分析、程序设计、调试与优化的技能;3. 培养学生团队合作能力,通过小组讨论、分工合作完成课程设计任务。

情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养学习主动性和积极性;2. 培养学生信息安全意识,强化社会责任感和道德观念,遵守相关法律法规;3. 培养学生面对问题勇于挑战、善于思考、解决问题的精神风貌。

本课程针对高中年级学生,结合C语言学科特点,注重理论与实践相结合,旨在提高学生的编程能力和信息安全意识。

课程设计遵循由浅入深的原则,从基本的加密算法入手,逐步引导学生掌握复杂加密程序的设计与实现。

通过本课程的学习,使学生能够在实践中运用所学知识,提高自身综合素质。

二、教学内容1. 加密基础理论:介绍加密概念、加密算法的分类及基本原理,重点讲解对称加密和非对称加密的优缺点及应用场景。

教材章节:第一章 计算机安全基础2. 常用加密算法:详细讲解凯撒密码、异或加密等算法原理,并通过示例程序展示算法实现过程。

教材章节:第二章 加密算法3. C语言编程实践:指导学生使用C语言编写加密和解密程序,掌握字符编码转换、密钥生成等技巧。

教材章节:第三章 C语言编程基础、第四章 字符串处理4. 加密程序设计与优化:分析加密程序的实现方法,引导学生进行程序优化,提高加密效果和执行效率。

教材章节:第五章 程序设计与优化5. 信息安全意识培养:结合实例,讲解计算机安全风险,提高学生的信息安全意识。

教材章节:第六章 计算机安全风险与防范6. 课程设计:分组进行课程设计,要求学生合作完成一个具有实际应用价值的加密程序,并在课堂上进行展示和评价。

c课程设计加密解密

c课程设计加密解密

c 课程设计加密解密一、教学目标本课程的学习目标包括知识目标、技能目标和情感态度价值观目标。

知识目标要求学生掌握加密解密的基本概念、原理和方法;技能目标要求学生能够运用加密解密技术解决实际问题;情感态度价值观目标要求学生增强信息安全意识,提高信息保护能力。

通过分析课程性质、学生特点和教学要求,我们将目标分解为具体的学习成果。

课程目标旨在培养学生的信息素养,使他们在理解加密解密的基础上,能够运用所学知识解决实际问题,提高信息保护意识,增强信息安全防护能力。

二、教学内容本课程的教学内容主要包括加密解密的基本概念、原理和方法,以及实际应用案例。

具体包括以下几个方面:1.加密解密基本概念:对称加密、非对称加密、哈希函数等。

2.加密解密原理:加密解密算法、密钥管理、数字签名等。

3.加密解密方法:加密软件使用、网络通信安全、数据保护等。

4.实际应用案例:加密解密技术在现实生活中的应用,如电子邮件、移动支付等。

教学大纲将按照教材的章节安排,循序渐进地教学内容,确保学生能够系统地掌握加密解密知识。

三、教学方法为激发学生的学习兴趣和主动性,我们将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

1.讲授法:讲解加密解密的基本概念、原理和方法。

2.讨论法:学生讨论实际应用案例,提高学生解决问题的能力。

3.案例分析法:分析加密解密技术在现实生活中的应用,增强学生的实践能力。

4.实验法:引导学生动手实践,提高学生的实际操作能力。

四、教学资源本课程将选用合适的教学资源,包括教材、参考书、多媒体资料、实验设备等。

教学资源将支持教学内容和教学方法的实施,丰富学生的学习体验。

1.教材:选用权威、实用的教材,为学生提供系统、全面的知识体系。

2.参考书:推荐相关参考书籍,拓展学生的知识视野。

3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。

4.实验设备:配置相应的实验设备,确保学生能够顺利进行实验操作。

c语言课程设计-文件加密解密(含源代码)

c语言课程设计-文件加密解密(含源代码)

c语⾔课程设计-⽂件加密解密(含源代码)C语⾔课程设计实验报告实验名称:⽂件加密解密院系:软件学院学号:⽇期:2012年9⽉3⽇—9⽉17⽇⼀:设计题⽬1:设计图形⽤户界⾯。

2:对⽂件进⾏加密并对加密⽂件进⾏保存。

3:对加密了的⽂件进⾏解密。

⼆:设计过程设计过程中遇到的困难和解决⽅法:1:不能很好地理解题意(通过⽼师的讲解)。

2:不知道如何设计加密解密程序(通过翻阅书籍和上⽹查找资料)过程:⾸先通过学习⽼师提供的资料了解⼤致的设计过程并懂得运⽤⼀些以前没有学习过的c语⾔。

先利⽤⽂本⽂件设计出加密解密的主要过程并能运⾏。

知道如何运⽤fopen将原⽂件打开并⽤fread将原⽂件内容读出来,然后进⾏加密设计并将加密的数据⽤fwrite写进指定的⽂件中并保存。

然后读出加密的⽂件并解密并保存。

最后在写出的程序中加⼊图形⽤户界⾯,运⽤wind ow,box,gotoxy等进⾏设计。

三:源代码#include <stdio.h> /* 标准输⼊、输出函数*/ #include /* 标准库函数*/#include <string.h> //*字符串处理函数*/#include /* 字符操作函数*/#include#include <dos.h>#define key_down80#definekey_up 72#definekey_esc 1#define key_enter 28#defineSIZE 1void box(int startx,int starty,int high,intwidth);int get_key();char buf[20*20*4];/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////加密解密*/voidfun(char*list,char *sd)/*加密过程*/{FILE*fp1,*fp2;char buf[1000]; /*⽂件临时存放处*/register intch;fp1=fopen("e:\list.txt","r"); /*⽤可读⽅式打开⽂件*/fp2=fopen("e:\sd.txt","w"); /*⽤可写⽅式创建⼀个⽂件*/if(fp1==NULL){printf("cannot openfile\n");exit(1);}if(fp2==NULL){printf("cannot build file\n");exit(1);}ch=fgetc(fp1);/*读出打开⽂件的光标处的⼀个字符*/ while(!feof(fp1))/*读出的字符不是最后的字符*/ {ch=ch<<1; /*加密⽅法*/fputc(ch,fp2);/*加密的字符存放在指定的地⽅*/ch=fgetc(fp1);}rewind(fp2); /*将光标移动到第⼀个字符前⾯*/fread(buf,sizeof(buf),1,fp2); /*从⽂件的当前位置开始中读取buf中存放的数据*/printf("%s",buf);/*fclose(fp1);fclose(fp2);*/}void man(char *sd,char *ds)/*解密过程*/{/*int n=0;*/FILE *fp2,*fp3;register int fh;char buf1[1000];fp2=fopen("e:\sd.txt","rb"); /*⽤可读⽅式打开⽂件*/ fp3=fopen("e:\ds.txt","wb"); /*⽤可写⽅式创建⼀⽂件*/ if(fp2==NULL){printf("cannot open file\n");exit(1);}if(fp3==NULL){printf("cannot build file\n");exit(1);}fh=fgetc(fp2); /*从光标处读出⼀个字符*/while(!feof(fp2)) /*当读出的字符到达最后⼀个则停⽌*/{fh=fh>>1; /*解密⽅式*/fputc(fh,fp3);/*解密的字符存放在指定的地⽅*/fh=fgetc(fp2);}fread(buf1,sizeof(buf1),1,fp3); /*读出buf1中所存放的数据*/printf("%s",buf1);}void main(){int k;char*f[]={"jiami","jiemi"};/**界⾯的形式/ int key,y;int j,q;char list[300];char sd[300];char ds[300];char ch,fh;char buf[1000];char buf1[1000];FILE *fp1;FILE*fp2;intl1,l2;window(1,1,80,25); /*left,top,right,bottom,相对于屏幕的字符坐标,屏幕原点在左上⾓*/ gettext( 20,10,40,14,buf); /*保存矩形屏幕上的字符*/textbackground(7); /*背景颜⾊*/textcolor(0);/*字体颜⾊*/clrscr(); /*清除矩形屏幕上的所有字符*/gotoxy(24,10); /*将当前字符屏幕的光标位置移动到x,y的坐标位⼦*/printf("%s",f[0]);gotoxy(24,14);printf("%s",f[1]);gettext(10,8,60,16,buf);box(22,9,3,30);/*建⽴⼀个⼩窗⼝*/key=0;while(1){ while(bioskey(1)==0); /*读取键盘值查询键盘是否按下*/key=get_key(); /*按下了什么键盘*/if(key==key_up||key==key_down){y=wherey(); /*得到字符模式下窗⼝光标的x坐标数值*/if(key==key_up)y=y==10? y+4:10;/*当y=10光标向下移动四个位置否则将光标移动到y=10处*/if(key==key_down)y=y==14? y-4:14; /*当y=14光标向下移动四个位置否则将光标移动到y=14处*/puttext(10,8,60,16,buf); /*将gettext函数保存的字符恢复到屏幕上*/gotoxy(24,y);if(y==10){ textbackground(7);textcolor(0);box(22,9,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[0]);}else{ textbackground(7);textcolor(0);box(22,13,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[1]);}}if(key==key_enter&&y==10)且光标在y=10处 /*当按下enter键且光标在y=10处进⾏下步*/{clrscr();textbackground(3);textcolor(15);/*clrscr(); */gotoxy(24,5);printf("input the file name for jiami\n");/*⽤户给需要加密的⽂件加密*/l1=strlen("input the file name for jiami:"); /*待求长度的字符串指针*/gotoxy(24+l1,5);scanf("%s",list);gotoxy(24,10);printf("input file name forsave\n");/*给加密后的⽂件命名,并保存*/l2=strlen("input file name forsave:");gotoxy(24+l2,10);scanf("%s",sd);fun(list,sd);fp1=fopen("e:\sd.txt","rb");fread(buf1,sizeof(buf1),1,fp1);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiami ,save now");getche(); break;}if(key==key_enter&&y==14){clrscr();textbackground(3);textcolor(15);gotoxy(24,5);printf("input the file namefor jiemi \n");/*⽤户给需要解密的⽂件解密 */l1=strlen("input the file namefor jiemi: ");gotoxy(24+l1,5);scanf("%s",sd);gotoxy(24,10);printf("input file name for save:\n");/*对解密的⽂件系统⼜可以提供保存路径 */l2=strlen("input file name for s ave: ");gotoxy(24+l2,10);scanf("%s",ds);man(sd,ds);fp2=fopen("e:\ds.txt","rb");fread(buf1,sizeof(buf1),1,fp2);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiemi,save now");getche();break;}}window(1,1,80,25);gettext( 20,10,40,14,buf);textcolor(0);clrscr();gotoxy(24,10);printf("%s",f[0]);gotoxy(24,14);printf("%s",f[1]);gettext(10,8,60,16,buf);box(22,9,3,30);key=0;while(1){ while(bioskey(1)==0);key=get_key();if(key==key_up||key==key_down){y=wherey();if(key==key_up)y=y==10? y+4:10;if(key==key_down)y=y==14?y-4:14;puttext(10,8,60,16,buf);gotoxy(24,y);if(y==10) /*光标在10处的窗⼝*/{ textbackground(7);textcolor(0);box(22,9,3,30);textbackground(3);textcolor(15);gotoxy(24,y);cprintf("%s",f[0]);}else{ textbackground(7);textcolor(0);box(22,13,3,30);textcolor(15);gotoxy(24,y);cprintf("%s",f[1]);}}if(key==key_enter&&y==10){clrscr();textbackground(3);textcolor(15);/*clrscr(); */gotoxy(24,5);printf("input thefile name for jiami\n");/*⽤户给需要加密的⽂件加密 */ l1=strlen("input the file name for jiami:");gotoxy(24+l1,5);scanf("%s",list);gotoxy(24,10);printf("input file name for save\n");/*给加密后的⽂件命名,并保存*/l2=strlen("input file name for save:");gotoxy(24+l2,10);scanf("%s",sd);fun(list,sd);fp1=fopen("e:\sd.txt","rb");fread(buf1,sizeof(buf1),1,fp1);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiami ,save now");getche();}if(key==key_enter&&y==14){clrscr();textbackground(3);textcolor(15);gotoxy(24,5);printf("input the file name for jiemi \n");/*⽤户给需要解密的⽂件解密*/l1=strlen("input the file name forjiemi:");gotoxy(24+l1,5);scanf("%s",sd);gotoxy(24,10);printf("input filenamefor save:\n");/*对解密的⽂件系统⼜可以提供保存路径*/l2=strlen("input file name for save: ");gotoxy(24+l2,10);scanf("%s",ds);man(sd,ds);fp2=fopen("e:\ds.txt","rb");fread(buf1,sizeof(buf1),1,fp2);gotoxy(10,15);printf("%s\n",buf1);getch();printf("file haven jiemi,save now");getche();break;}}}int get_key(){union REGS rg;rg.h.ah=0;int86(0x16,&rg,&rg);return rg.h.ah;getchar();}void box(intstartx,int starty,int high,intwidth) /*屏幕的建⽴*/{int i;gotoxy(startx,starty);putch(0xda);for (i=startx+1;iputch(0xc4);putch(0xbf);for(i=starty+1;i <high+starty;i++){gotoxy(startx,i);putch(0xb3);gotoxy(width,i);putch(0xb3);}gotoxy(startx,starty+high-1);putch(0xc0);gotoxy(startx+1,starty+high-1);for(i=startx+1;iputch(0xc4);putch(0xd9);return;}四:⼼得体会通过这次的作业我觉得最⼤的收获是不仅把平时学习到的知识理解的更加透彻,⽽且使知识更加系统化,同时还把有些平时不太注意的⼩问题发现了出来,这不但有利于我学习C语⾔,⽽且对于我学习任何⼀门课程都是很有益处的。

实验报告 加密与解密(文件) C语言

实验报告   加密与解密(文件) C语言

实验报告---文件的加密与解密一、问题重述基于对各种加密算法的理解,结合各种加密、解密算法,选择合适的加密方法分别对文件进行加密和解密。

二、实验目的及要求2.1 实验目的1)在Linux环境下编写C语言程序,实现文件加密与解密;2)通过此次实验了解通信过程中不同的加密方式;3)了解不同的加密算法及加密过程;4)从多种加密和解密方式出发,对加密和解密的知识进行扩展。

2.2 实验要求根据不同的加密算法,设计加密程序,完成对文件的加密和解密。

2.3实验环境操作系统:Linux操作系统、window10操作系统;C语言环境: vim编辑器、DEV C++编辑器。

硬件环境:机房内电脑及个人笔记本电脑。

三、总体设计及思路3.1 实验思路对于文件的加密和解密主要采用ASCII与十进制数字之间相互转换的方法。

1)准备部分新建三个文件,分别命名为file1、file2、file3,其中file1装有源数据;将对file1加密后的信息放入file2中;对file2进行解密,解密生成的信息放入file3中。

2)计算部分当进入加密模式,首先对文件file1、file2进行读取操作,在保证成功读取文件的前提下,采用十进制转ASCII码的方法对文件file1进行加密,且加密后的数据保存在file2中,即文件file2是文件file1的加密文件。

采用ASCII码转十进制的方法对文件file2进行解密,解密后的数据放入file3中,即file3是file2的源文件。

四、实验过程4.1.1文件的读取顾名思义文件的加密和解密是以文件作为依托的,所以我们首先需要新建两个文件,文件1存放原始数据,其名字定义为file1.text;对文件1进行加密后需要将加密后的数据存放至文件2中,此处将文件2命名为file2.txt,最后将利用fopen函数以读取的方式打开文件,文件读取代码如下:4.1.2 文件的加密文件的加密过程采用十进制转三位ASCII码的加密方式,对从文件1中读取的字符依次进行ASCII码的转换,此段代码如下:4.1.3 文件的解密文件的解密过程采用与加密过程相反的操作,在linux下新建一个文件“file3.txt”,对加密后保存到文件2内的数据字符进形读取,将其转化为十进制,再将解密后的结果保存到file3中。

c语言文件加密程序课程设计

c语言文件加密程序课程设计

c语言文件加密程序课程设计一、课程目标知识目标:1. 学生能理解文件加密的基本原理,掌握C语言中文件操作的相关函数。

2. 学生能运用C语言编程实现文件的加密与解密功能。

3. 学生了解并掌握字符编码和加密算法在C语言中的实现方式。

技能目标:1. 学生能独立完成C语言文件加密程序的编写和调试。

2. 学生具备分析和解决编程过程中遇到问题的能力。

3. 学生通过本课程的学习,提高逻辑思维和编程实践能力。

情感态度价值观目标:1. 学生培养对计算机编程的兴趣和热情,提高学习积极性。

2. 学生在团队协作中,学会沟通与分享,培养合作精神。

3. 学生通过本课程的学习,认识到编程对现实生活的意义和价值,增强社会责任感。

课程性质:本课程为实践性较强的课程,注重培养学生的编程实践能力和创新思维。

学生特点:学生具备一定的C语言基础,对编程有一定了解,但编程实践经验不足。

教学要求:结合学生特点,采用任务驱动法,引导学生自主探究,注重培养学生的实践能力和团队协作能力。

在教学过程中,将课程目标分解为具体的学习成果,以便进行教学设计和评估。

二、教学内容1. 文件操作基础:回顾C语言中文件操作的基本概念,包括文件的打开、关闭、读写等函数的使用方法,对应教材中文件操作相关章节。

2. 加密算法原理:介绍常见的字符编码和加密算法,如凯撒密码、异或运算等,讲解加密算法在C语言中的实现方式,结合教材中算法部分内容。

3. C语言加密程序设计:根据课程目标,设计实际案例,指导学生编写文件加密与解密程序。

教学内容包括:a. 程序需求分析b. 加密算法的选择与应用c. C语言编程实现加密与解密功能d. 程序调试与优化,对应教材中项目设计与实践章节。

4. 教学进度安排:a. 文件操作基础(1课时)b. 加密算法原理(1课时)c. C语言加密程序设计(2课时,含实践操作)d. 程序调试与优化(1课时)5. 教学内容强调:在教学过程中,注重理论与实践相结合,鼓励学生动手实践,培养学生的编程能力和问题解决能力。

c语言文本加密解密课程设计

c语言文本加密解密课程设计

c语言文本加密解密课程设计一、教学目标本课程的目标是让学生掌握C语言文本加密解密的基本原理和方法。

通过本课程的学习,学生将能够:1.理解文本加密解密的基本概念和原理。

2.掌握C语言的基本语法和编程技巧。

3.学会使用C语言编写简单的文本加密解密程序。

4.能够分析和解密常见的文本加密算法。

二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础知识:包括C语言的基本语法、数据类型、运算符、控制结构等。

2.文本加密解密原理:包括加密解密的基本概念、加密算法的工作原理等。

3.C语言文本加密解密实现:包括使用C语言实现简单的文本加密解密算法、分析和解密常见的文本加密算法等。

三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学。

1.讲授法:通过讲解和演示,让学生掌握文本加密解密的基本概念和原理。

2.案例分析法:通过分析和解密实际的文本加密算法,让学生加深对加密解密原理的理解。

3.实验法:通过编写和运行C语言程序,让学生亲手实践文本加密解密的过程,提高编程能力和问题解决能力。

四、教学资源本课程的教学资源主要包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用《C程序设计语言》作为主要教材,辅助以《C语言加密解密实例解析》等参考书。

2.多媒体资料:提供相关的教学PPT、视频教程等多媒体资料,帮助学生更好地理解和掌握课程内容。

3.实验设备:提供计算机实验室,让学生能够进行实际的编程实践和实验操作。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面客观地评价学生的学习成果。

1.平时表现:通过课堂参与、提问、小组讨论等形式的评估,占总成绩的30%。

2.作业:布置相应的编程练习和理论题目,要求学生在规定时间内完成,占总成绩的40%。

3.考试:期末进行理论知识考试和编程实践考试,占总成绩的30%。

六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保每个章节都有充分的时间进行讲解和练习。

C语言课程设计加密

C语言课程设计加密

C语言课程设计加密一、教学目标本章节的教学目标是使学生掌握C语言的基本加密技术,包括位运算加密、异或加密、移位加密等。

知识目标要求学生理解加密的基本原理,能够运用C语言实现简单的加密和解密功能。

技能目标要求学生能够运用所学知识对程序进行安全保护,提高程序的抗攻击能力。

情感态度价值观目标在于培养学生对计算机安全的重视,增强信息安全意识。

二、教学内容本章节的教学内容主要包括C语言的基本加密技术。

首先,介绍加密的基本概念和原理,使学生了解加密的重要性和应用场景。

然后,讲解位运算加密、异或加密、移位加密等基本加密方法,并通过实例演示如何使用C语言实现这些加密和解密功能。

最后,结合实际案例,让学生学会如何运用所学知识对程序进行安全保护。

三、教学方法为了达到本章节的教学目标,将采用多种教学方法相结合的方式进行教学。

首先,采用讲授法,为学生讲解加密的基本概念和原理,让学生形成对加密技术的初步认识。

其次,通过案例分析法,让学生了解加密技术在实际应用中的重要性。

然后,利用实验法,让学生动手实践,亲身体验加密和解密过程,加深对加密技术理解。

最后,学生进行讨论,分享学习心得和经验,提高学生的合作能力和沟通能力。

四、教学资源为了支持本章节的教学内容和教学方法的实施,将准备以下教学资源。

首先,教材《C语言程序设计》,作为学生学习的基础资料,为学生提供C语言编程的基础知识。

其次,参考书籍《C语言加密技术》,为学生提供深入了解加密技术的资料。

再次,多媒体资料,包括教学PPT、视频教程等,为学生提供直观的学习材料。

最后,实验设备,包括计算机、网络设备等,为学生提供动手实践的机会。

五、教学评估本章节的教学评估将采用多元化的评估方式,全面客观地评价学生的学习成果。

评估方式包括平时表现、作业、考试等。

平时表现主要考察学生在课堂上的参与程度、提问回答等情况,占总评的20%。

作业包括课堂练习和课后编程项目,占总评的30%。

考试分为期中考试和期末考试,期中考试占总评的20%,期末考试占总评的30%。

凯撒加密解密C语言课程设计

凯撒加密解密C语言课程设计

C语言程序设计课程设计(论文)题目凯撒加密解密课程设计院(系):___________________________专业班级:___________________________学号:______________________________学生姓名:___________________________指导教师:___________________________教师职称:_________________________起止时间:_________________________课程设计(报告)任务及评语院(系):软件学院 教研室:软件教研窒学号 学生姓名专业班级程序设计 (报告) 题目 凯撒加密解密课程设计程序设计的任务与要求:(1) 掌握C 语言编程的基础知识。

(2) 较熟练地编写C 语言应用程序。

程序设计—报告}任务(3) 了解C 语言的常用标准函数、编程技巧、异常处理。

(5) 联系已学过的内容,巩固所学的理论,增强独立工作能力。

(6) 通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能 力都有一个很大的提高。

(7) 通过本次设计,进一步培养学生热爱专业的思想, 同时对本专业综合素 质的提高起一个积极的推动作用。

课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导 正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。

指导教师评语及成绩指导教师签字:2011年12月22日目录第1章课程设计的目的与要求 (1)1.1课程设计目的 (1)1.2课程设计的实验环境 (1)1.3课程设计的预备知识 (1)1.4课程设计要求 (1)第2章课程设计内容 (2)2.1程序功能介绍 (2)2.2程序整体设计说明 (3)2.1设计思路 (3)2.2.2数据结构设计及用法说明 (4)2. 换位解密流程图 (6)3. 替代加密流程图 (7)4. 替代解密流程图 (8)2.2.3程序结构(流程图) (5)2.2.4各模块的功能及程序说明 (10)2.2.5程序结果 (10)2.3程序源代码及注释 (12)第3章课程设计总结 (18)参考资料 (19)第1章课程设计的目的与要求1.1课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

大学课程设计文件的加密解密—单位数理系分院(系)专业应用物理)学号学生姓名指导教师完成日期 2010 年 9 月 17日摘要}进行程序的加密解密是现在对文件保护的一种重要措施。

传统的文件保护方法只是对文件进行封存。

随着计算机和网络技术的迅速发展,越来越多的人意识到文件加密的重要性,而采用一定的程序对文件进行加密正是现在人们对文件保护的一种必要手段。

文件加密技术是通过相应程序对文件进行加密,它有许多优点,例如:可以对任意文本文档进行不同种类的加密,对原文件不造成破坏,同时可以将加密后的文件保存起来用于传输。

程序灵活性强,可以随时进行加密解密。

用户可以根据需要使程序完成相应功能。

本文采用C程序,实现了所述功能中的全部内容。

论文首先介绍了程序的设计思路,其中包括相应的流程图。

其次,介绍了函数的主要功能。

最后,利用C语言环境编辑程序实现了全部功能,并作了详细描述。

关键词:文件加密,功能,文件,C程序。

目录…第1章选题的意义……………………………………………………………………………错误!未定义书签。

文件加密的意义……………………………………………………………………错误!未定义书签。

设计程序的意义…………………………………………………………………错误!未定义书签。

第2章系统功能需求分析……………………………………………………………………错误!未定义书签。

系统的基本要求…………………………………………………………………错误!未定义书签。

功能设计…………………………………………………………………………错误!未定义书签。

第3章系统设计………………………………………………………………………………错误!未定义书签。

设计思路 (6)【程序模块 (7)功能图 (7)函数分析 (11)第4章系统实现………………………………………………………………………………错误!未定义书签。

第5章总结……………………………………………………………………………………错误!未定义书签。

第1章选题的意义文件加密的意义随着科学的日益进步,电子技术越来越被人们所广泛使用。

在此期间,自然就涉及到文件的传递。

在此之前有关文件的转移都是人为进行转移,因此所谓的加密是物理意义上的加密。

物理上的加密就是对文件封存,以至于文件内容不会泄露。

但在这个网络的时代,文件的传递有着更加快捷的方式,就是通过互联网。

这是种抽象的传输方式,文件不通过接触性交换,而是以数据的形式传送。

在传递过程中,文件很容易被人截获,从而被他人得到了文件内容。

如果不进行有效的保护措施,一旦发生这种情况,文件内容自然就没有保密可言,将会造成严重的损失。

如果将原文件加密,虽然在传输过程中仍有被截获的可能,但窃取者可能无法阅读文件中的内容,从而间接的保护了文件。

因此可以说,对文件的加密是极为重要的。

^设计程序的意义本题目的内容是要对一个文件进行加密与解密。

通过对程序的设计,可以对C程序中的数组·函数·分支·循环·文件等内容有更深入的理解与运用。

设计程序的过程中,通过已有知识的运用和独立完成与思考,能够做到对知识的整体理解。

通过解决设计过程中遇到的问题,能够提高设计程序的熟练度,并对知识有巩固作用。

另外,所选题目与自己的兴趣有关。

编程之中不仅能提高题目涉及到的内容的兴趣,更主要在于能够对C语言更加感兴趣。

第2章系统功能需求分析系统的基本要求本题目的要求是通过程序,将已有文件进行加密解密。

其中要求加密解密方式不止一种,也就是说,运行程序后,提供给使用者不同的选择。

使用者根据自己的需要,选择相应的选项,就可以得到不同的结果。

与此同时,也要将加密或解密后的程序予以保存。

原文件和要保存的文件路径由使用着自己确定。

设计的过程中要求设计者独立完成,程序设计思路清晰,报告画面整洁。

功能设计·本程序要完成如下几项功能:1.提供给使用者选择加密与解密的方式的界面,界面自由设计,但必须包括不同加密解密方式的提示,以及提示使用者输入文件读入的路径和文件保存的路径。

比如“请输入要读入文件的完整路径”“请输入要将加密后的文件保存的完整路径”“请选择加密方式”“ASCII 码加密请按一”等等;2.根据使用者的选择,执行相应加密或解密函数,对文档加密或解密。

这是程序的主要部分,程序中要编译许多函数以完成相应功能。

加密方式包括ASCII码加密;倒叙加密;二进制加密。

所以至少要完成三种加密函数,才能够完整的执行全部功能。

3.将以加密的文件保存,并显示在屏幕上。

这是程序的收尾工作。

因为题目为文件的加密解密,所以自然要包括加密后对文件的保存。

加密后的文件可以通过互联网传输,将加密后的文件以某种格式保存后,便于文件的传递。

显示于屏幕上方便于使用者查看加密后的效果。

打开保存的文件对比后,发现显示的内容与文件中的内容一致。

即做到了文件的保存。

第3章系统设计设计思路1.程序中涉及到的全局变量:Int k 为一全局变量,起其作用是用来存放用户对加密与解密方式的选择。

2.程序中涉及到的自定义函数:;Void password1:ASCII码加密函数;Void pass1:ASCII码解密函数;Void password2:倒叙加密函数;Void pass2:倒叙解密函数;Void password3:二进制加密函数;Void pass3:二进制解密函数;3.设计:(1)主函数:-主函数完成的功能包括,提供给使用者选择界面,以及根据使用者的选择,执行不同功能。

函数中首先要对自定义函数进行声明。

运行该函数,显示出程序能够完成的加密与解密功能,并提供给使用者自行选择的空间。

使用者根据提示,选择相应的功能后,通过选择语句,执行相应的函数,以完成使用者的要求。

可以考虑在函数中定义整型变量k,该变量的作用是从键盘上读取一个数字,该数字为使用者选择程序要执行的功能选项。

这样就可以编写一个switch选择语句,将不同的k值指向不同的自定义函数,以进一步完成相应的功能。

(2)加密部分:该部分是程序中十分重要的一部分,对文件的加密过程要在此完成。

该部分包括三种不同的自定义函数:Void password1;void password2;void password3。

即可完成三种不同的加密方法。

执行该函数,将已有文件保存在一个数组中,通过对该数组元素的加密,实现对原文件中的内容的加密。

再将加密后的结果显示在屏幕上,供使用者检查,并将加密后的内容保存在使用者指定的文件中。

虽然有三个不同的函数,但主要思想是一样的。

函数中要定义文件类型指针FILE *fp,*fp2.指针的作用是只想要打开的文件和要保存的地址,只有这样才能实现对文件的加密和保存。

Char a[]:用以保存打开文件中的内容;char outfile[],infile[]用以记录使用者选择打开文件和保存文件的路径。

Int i:是对数组进行加密是定义的一个整型变量,他通过循环体,将数组中不同位置的元素进行改变。

Int m:通过循环体,记录文件中包括的字符的总数,通过m,可将文件整体内容复制到数组a[]中。

(3)解密部分:该部分是根据加密部分相应编辑出来的。

这一部分同样由三种不同的自定义函数组成,可以想象到,三个函数与加密函数一一对应。

运行解密函数之前,可以先运行相应的加密函数,将加密后的内容保存到某一文件中。

然后运行解密函数,选择被打开的文件为刚加密的文件,这样可以发现,解密后的内容与原文件相同。

—Char a[]:用以保存打开文件中的内容;char outfile[],infile[]用以记录使用者选择打开文件和保存文件的路径。

Int i:是对数组进行加密是定义的一个整型变量,他通过循环体,将数组中不同位置的元素进行改变。

Int m:通过循环体,记录文件中包括的字符的总数,通过m,可将文件整体内容复制到数组a[]中。

程序模块图1 功能模块组成系统分为三部分:显示加密或解密方式;显示加密或解密结果;保存结果。

功能图主函数自定义函数void password1Void password2—Void pass1;Void pass2图4 pass2函数算法函数分析《(1)主函数:void main()功能显示加密与解密方式选项,对使用者不同选择,对应执行相应的函数。

内容分析Void password ;void pass是对自定义函数的声明,其函数内容会在后面编译。

Int k 定义整型变量,记录使用者的选择。

Printf()显示提示语句,提示使用者选择不同的数字会得到不同的结果。

Switch(k)根据k值的不同,对应执行不同的函数。

(2)void password1():功能完成对已有文件的ASCII码加密,程序中设计的是用该字母前面的第5个字母代替。

加密后字幕的相对差值没有改变,但每个字母都变为自身前面第5个字母。

使他人无法阅读,实现了加密功能。

内容分析Scanf()使用户输入原文件的位置。

fp=fopen(infile,"r")打开相应的文件。

While()用m记录文件共用多少个字符。

Rewind()使文件指针从新指向文件开头。

fgets(a,m,fp)将文件中的全部内容付给a[]数组。

—For()实现对数组a中的元素改变。

a[i]=a[i]-5,即用元素字母前面第5个字母代替当前字母Puts (a)在屏幕上显示出数组内容,即加密后的内容。

Fputs(a,fc)将加密后的数组保存到fd所指向的文件中。

Fclose()关闭文件。

(3)void password2()功能完成对以有文件的倒叙加密,即将文件中的内容全部倒置。

加密后文件字母没有改变,但顺序改变,使人一时间无法识破,实现加密功能。

内容分析Scanf()使用户输入原文件的位置。

fp=fopen(infile,"r")打开相应的文件。

While()用m记录文件共用多少个字符。

Rewind()使文件指针从新指向文件开头。

fgets(a,m,fp)将文件中的全部内容付给a[]数组。

t=a[i];a[i]=a[j];a[j]=t;将文件最后一个字符付给第一个字符,将第一个字符付给最后一个字符。

再将第二个与倒数第二个交换,以此类推。

用for()实现循环。

Puts (a)在屏幕上显示出数组内容,即加密后的内容。

Fputs(a,fc)将加密后的数组保存到fd所指向的文件中。

|Fclose()关闭文件。

(4)void password3()功能完成对已有文件的二进制加密,将文件中的字母转换成数字不同字母(包括大小写)由不同数字代替,标点符号和间隔符也转换成相应的数字。

其他人看到的加密后的文件只是很多的数字,根本无法阅读,实现了加密功能。

相关文档
最新文档