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

合集下载

C文件加密课程设计

C文件加密课程设计

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

2. 让学生理解加密算法的基本原理,学会在C语言中实现简单的文件加密和解密功能。

3. 让学生了解不同的加密方法和其在现实生活中的应用场景。

技能目标:1. 培养学生运用C语言进行文件操作的能力,并能将其应用于加密和解密过程中。

2. 培养学生通过编程解决实际问题的能力,例如设计一个简单的文件加密工具。

3. 提高学生的逻辑思维能力,使他们能够分析并优化加密算法。

情感态度价值观目标:1. 培养学生对计算机安全和个人隐私保护的兴趣,增强信息安全意识。

2. 激发学生的创新意识,鼓励他们探索计算机科学领域的未知问题。

3. 培养学生的团队协作精神,使他们学会在项目合作中发挥各自的优势。

本课程针对高年级学生,在掌握了C语言基本知识的基础上,通过本课程的学习,使学生能够将所学知识应用于实际加密场景,提高学生的编程实践能力和信息安全意识。

在教学过程中,注重理论与实践相结合,鼓励学生动手实践和自主探索,以培养学生的创新精神和解决问题的能力。

通过分解课程目标为具体的学习成果,教师可针对性地进行教学设计和评估,确保课程的实用性和有效性。

二、教学内容1. 文件操作基础知识:文件的打开、读取、写入和关闭操作,文件指针的概念和使用。

2. 加密算法原理:对称加密和非对称加密的原理介绍,重点讲解对称加密算法如DES、AES的加密流程和密钥管理。

- 教材章节:第五章“数据加密与安全”第1-2节。

3. C语言实现文件加密:运用C语言编写文件加密和解密程序,包括算法的选择、密钥生成和文件处理。

- 教材章节:第五章“数据加密与安全”第3-4节。

4. 加密算法应用案例分析:分析实际应用中的加密场景,如网络通信、文件存储等,了解加密技术在生活中的应用。

- 教材章节:第五章“数据加密与安全”第5节。

5. 实践项目:设计一个简单的文件加密工具,实现文件的加密、解密和密钥管理功能。

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.知识目标:•了解加密技术的基本概念、分类和应用场景。

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

•理解对称加密、非对称加密和哈希函数的原理和实现。

2.技能目标:•能够使用C语言编写简单的加密和解密程序。

•能够分析和解决加密技术相关的问题。

•能够运用所学知识进行实际的加密技术应用。

3.情感态度价值观目标:•培养学生的创新意识和团队合作精神。

•培养学生对加密技术的兴趣和好奇心。

•培养学生的信息安全意识和保护个人隐私的意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基础:•C语言的基本语法和数据类型。

•控制结构和函数的定义和使用。

2.加密技术基础:•加密技术的基本概念和分类。

•对称加密和非对称加密的原理和实现。

•哈希函数的原理和应用。

3.加密算法实现:•实现对称加密算法(如DES、AES等)。

•实现非对称加密算法(如RSA、ECC等)。

•实现哈希函数(如MD5、SHA-256等)。

4.加密技术应用:•数字签名和认证。

•数据安全和隐私保护。

•网络通信中的加密应用。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:教师讲解加密技术的基本概念、原理和实现方法,引导学生理解并掌握相关知识。

2.案例分析法:通过分析具体的加密技术应用案例,让学生了解加密技术在实际中的应用和重要性。

3.实验法:学生通过编写C语言程序,实现加密和解密算法,培养学生的实际编程能力和问题解决能力。

4.讨论法:学生分组讨论和合作完成项目,培养学生的团队合作精神和创新意识。

四、教学资源本课程的教学资源包括以下几个方面:1.教材:选用权威、实用的C语言和加密技术教材,为学生提供系统的学习材料。

2.参考书:提供相关的参考书籍,拓展学生的知识面和深入学习的能力。

C语言对文件进行密码加密学习代码

C语言对文件进行密码加密学习代码

#define_CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>#include<string.h>int getsize(char*path){FILE*p=fopen(path,"r");if(p==NULL){return-1;}else{fseek(p,0,SEEK_END);int length=ftell(p);return length;}}char jiamisuanfa(char p,char q){p=p+1;return p;}char jiemisuanfa(char p,char q){p=p-1;return p;}char*jiami(char*passward,char*string){int stringlength=strlen(string);int passwardlength=strlen(passward);if(stringlength%passwardlength==0){int ci=stringlength/passwardlength;for(int i=0;i<ci;i++){for(int j=0;j<passwardlength;j++){string[i*passwardlength+j]= jiamisuanfa(string[i*passwardlength+j],passward[j]);// putchar(string[i*passwardlength + j]);}}}else{int ci=stringlength/passwardlength;for(int i=0;i<ci;i++){for(int j=0;j<passwardlength;j++){string[i*passwardlength+j]=jiamisuanfa(string[i*passwardlength+j],passward[j]);}}int ci1=stringlength%passwardlength;for(int j=0;j<ci1;j++){string[ci*passwardlength+j]=jiamisuanfa(string[ci*passwardlength+j],passward[j]);}}return string;}char*jiemi(char*passward,char*string){int stringlength=strlen(string);int passwardlength=strlen(passward);if(stringlength%passwardlength==0){int ci=stringlength/passwardlength;for(int i=0;i<ci;i++){for(int j=0;j<passwardlength;j++){string[i*passwardlength+j]=jiemisuanfa(string[i*passwardlength+j],passward[j]);}}}elseint ci=stringlength/passwardlength;for(int i=0;i<ci;i++){for(int j=0;j<passwardlength;j++){string[i*passwardlength+j]=jiemisuanfa(string[i*passwardlength+j],passward[j]);}}int ci1=stringlength%passwardlength;for(int j=0;j<ci1;j++){string[ci*passwardlength+j]=jiemisuanfa(string[ci*passwardlength+j],passward[j]);}}return string;}void jiamifile(char*passward,char*path,char*pathjiami) {FILE*pr=fopen(path,"r");FILE*ph=fopen(pathjiami,"w");if(pr==NULL||ph==NULL){return;}int length=getsize(path);char*newstr=(char*)malloc(sizeof(char)*(length+1));for(int i=0;i<length;i++){char ch=fgetc(pr);newstr[i]=ch;}newstr[length]='\0';printf("%s,%p\n",newstr,newstr);newstr=jiami(passward,newstr);printf("%s,%p\n",newstr,newstr);for(int j=0;j<length;j++)//putchar(newstr[j]);char ch=fputc(newstr[j],ph);printf("%c",ch);}free(newstr);fclose(pr);fclose(ph);}void jiemifile(char*passward,char*pathjiami,char*pathjiemi) {FILE*pr=fopen(pathjiami,"r");FILE*ph=fopen(pathjiemi,"w");if(pr==NULL||ph==NULL){return;}int length=getsize(pathjiami);char*newstr=(char*)malloc(sizeof(char)*(length+1));for(int i=0;i<length;i++){char ch=fgetc(pr);newstr[i]=ch;}newstr[length]='\0';printf("%p,%s\n",newstr,newstr);newstr=jiemi(passward,newstr);for(int j=0;j<length;j++){putchar(newstr[j]);fputc(newstr[j],ph);}free(newstr);fclose(pr);fclose(ph);}void main(){char*path="C:\\Users\\xiaokang\\Desktop\\2.txt";char*pathjiami="C:\\Users\\xiaokang\\Desktop\\jiami.txt";char*pathjiemi="C:\\Users\\xiaokang\\Desktop\\jiemi.txt";char*passward="456";jiamifile(passward,path,pathjiami);jiemifile(passward,pathjiami,pathjiemi);system("pause");/*char str[200] = "int num[10][9][8][7];int (*p)[9][8][7]访问数组p[i][j][k][l], *(*(*(*(p+i)+j)+k)+l)";char *passward = "ABC";printf("%s,%p\n", jiami(passward, str), str);printf("%s\n", jiemi(passward, str));system("pause");*/}这个算法有缺陷,水平有限找不出原因,如果有找到的qq联系103606068多试几个文件就知道有什么问题了。

文件解密加密C程序

文件解密加密C程序

#include <stdio.h>#include <string.h>void ArrayReverse(char a[], unsigned int length)//字符数组反转{char t;unsigned int i;for(i=0; i< length/2; i++){t = a[i];a[i] = a[length - 1 -i];a[length - 1 -i] = t;}return;}void AlphaArrayShift(char a[], unsigned int length, unsigned int shift)//Upper char shift forward, lower char shift backward{unsigned int i;for(i=0; i<length; i++){if( ( (a[i] >= 'A') && (a[i] <= 'Z') ) || \( (a[i] >= 'a') && (a[i] <= 'z') ) ) //handle alpha char only{if ( (a[i] >= 'A') && (a[i] <= 'Z') ){a[i] = ( ( a[i] - 'A' + shift ) % 26 ) + 'A';//大写字母右移shift个}else if ( a[i] >= 'a' && a[i] <= 'z' ){a[i] = ( a[i] - 'a' + 26 - shift ) % 26 + 'a';//小写字母左移shift个}}}return;}void Encryption(FILE *fp,FILE *ft,int code){unsigned int l;char s[256];rewind(fp);rewind(ft);while((fgets(s,256,fp))!=NULL){l=strlen(s);printf("Read size:%d\n",l);printf("Before encode:\n%s\n",s);AlphaArrayShift( s, l, code % 26 );printf("After encode:\n%s\n",s);ArrayReverse(s, l);printf("After reverse:\n"); //测试输出printf("%s\n",s); //测试输出fputs(s,ft);}return;}void Decryption(FILE *fp,FILE *ft,int code) //解密函数{Encryption(fp,ft,26 - (code % 26));return;}int main(void){int code;const char * FILENAME = "text.txt";//原文件名const char * FILENAME2 = "encode.txt";//加密后文件名const char * FILENAME3 = "decode.txt";//解密后文件名FILE * fp, *fp2, *fp3;if( (fp = fopen(FILENAME, "r")) == NULL){printf("Can not open file %s!\n", FILENAME);}else if((fp2 = fopen(FILENAME2, "w+")) == NULL){printf("Can not open file %s!\n", FILENAME2);}else{printf("请输入加密位移\n");scanf("%d",&code);Encryption(fp,fp2,code);printf("加密成功!\n");fclose(fp);fclose(fp2);}if( (fp2 = fopen(FILENAME2, "r")) == NULL){printf("Can not open file %s!\n", FILENAME2);}else if((fp3 = fopen(FILENAME3, "w+")) == NULL){printf("Can not open file %s!\n", FILENAME3);}else{printf("请输入解密位移\n");scanf("%d",&code);Decryption(fp2,fp3,code);printf("解密成功!\n");fclose(fp2);fclose(fp3);}return 0;}。

(完整word版)电子系c语言程序设计加密解密

(完整word版)电子系c语言程序设计加密解密

课程设计报告课程设计名称: C语言程序设计指导教师:学生:学号:学院:电子信息工程学院完成时间: 2011年9月27日嘉应学院电子信息工程学院目录1 需求分析 02总体设计 (1)3详细设计 (2)3.1 换位加密流程图 (2)3。

2 换位解密流程图 (3)3。

3 替代加密流程图 (4)3。

4 替代解密流程图 (6)4调试与测试 (8)5测试结果 (9)6附录 (13)1 需求分析问题描述(实验指导书中已经给出)①数据的输入和输出;要求使用文件操作.文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中.②换位加密和解密:加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文;③凯撒加密和解密:加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文;④统计单词的个数;⑤退出。

2总体设计(程序设计总流程图,可以画带流程线的流程图)此处只需要写出一个流程图就可以了,就是总的那个流程图,请规范的画图。

不需要分出2.1和2。

2.3详细设计(各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之间关系的说明。

以第1题为例,此处应为:3。

1 换位加密流程图流程图(对流程图加以说明.可以把关键语句放在此处,加以注释说明)3。

2 换位解密流程图流程图(对流程图加以说明。

可以把关键语句放在此处,加以注释说明)3。

3 替代加密流程图流程图(对流程图加以说明。

可以把关键语句放在此处,加以注释说明)3.4 替代解密流程图流程图(对流程图加以说明。

可以把关键语句放在此处,加以注释说明)4调试与测试(调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施)调试程序,描述测试过程中遇到的问题和解决办法1.文件操作时打开的文件应该及时关闭,不然不会保存,在下次打开时就读不到以前存放在该文件里面的数据,而编译时却不会提示有错误.2..函数调用时,被调函数必须在前面声明或者写在调用函数的上面,不然在编译时也不会提示错误,程序却不能执行.3.空格的去除;采用指针的方法将去除空格的字符串放到另一个数组中4.菜单函数的容错;用default:system(”cls”); caidan();实现。

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语言  文件加密解密
clude<stdio.h> #include<stdlib.h> void main(int argc,char *argv[]) { FILE *p1,*p2; char n=0x6a,ch; if(argc!=3) { printf("命令行输入有误\n"); return; } if((p1=fopen(argv[1],"rb"))==NULL) { printf("不能打开源文件\n"); return; } if((p2=fopen(argv[2],"wb"))==NULL) { printf("不能打开或创建目标文件\n"); return; } printf("加密后文件为\n"); while(1) { ch=fgetc(p1); if(feof(p1)) break; ch=ch^n; fputc(ch,p2); putchar(ch); }
将文件将文件将文件file1file1file1中的每一字符与中的每一字符与中的每一字符与0x6a0x6a0x6a异或变成另一个字符送屏幕显示异或变成另一个字符送屏幕显示异或变成另一个字符送屏幕显示同时存入文件同时存入文件同时存入文件file2file2file2中
实验项目内容(实验题目)
文件加密解密。将文件file1中的每一字符与0x6a异或变成另一个字符送屏幕显示, 同时存入文件file2中。打开加密的file2输出解密内容。要求加密自己写过的一个程 序文件。 注:1、异或运算符——“^”; 2、被加密文件和加密输出文件的名字从命令行提供;
fclose(p1); fclose(p2); printf("文件加密完毕\n"); if((p2=fopen(argv[2],"rb"))==NULL) { printf("不能打开或创建目标文件2\n"); return; } printf("文件解密如下:\n"); while(1) { ch=fgetc(p2); if(feof(p2)) break; ch=ch^n; putchar(ch); } fclose(p2); }

文件加密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语言解密代码

c语言解密代码

c语言解密代码下面是一个简单的`C`语言加密解密代码,实现了凯撒加密的功能:```c#include<stdio.h>#include<stdlib.h>#include<string.h>// 函数 encode() 将字母顺序推后 n 位,实现文件加密功能void encode(char str[], int n){char c;int i;for (i = 0; i < strlen(str); ++i){// 遍历字符串c = str[i];if (c >='a' && c <='z'){// c 是小写字母if (c + n % 26 <='z'){// 若加密后不超出小写字母范围str[i] = (char)(c + n % 26);}else{// 加密后超出小写字母范围,从头开始循环小写字母 str[i] = (char)(c + n % 26 - 26);}elseif (c >='A' && c <='Z'){// c 为大写字母if (c + n % 26 <= 'Z'){// 加密后不超出大写字母范围str[i] = (char)(c + n % 26);}else{// 加密后超出大写字母范围,从头开始循环大写字母 str[i] = (char)(c + n % 26 - 26);}}else{// 不是字母,不加密str[i] = c;printf("\nAfter encode: \n");puts(str);}}// 输出加密后的字符串printf("\nAfter encode: \n");puts(str);}// 实现解密功能,将字母顺序前移 n 位void decode(char str[], int n){int i;for (i = 0; i < strlen(str); ++i){c = str[i];if (c >='a' && c <='z'){// 解密后还为小写字母,直接解密if (c - n % 26 >='a'){str[i] = (char)(c - n % 26);}else{// 解密后不为小写字母了,通过循环小写字母处理为小写字母 str[i] = (char)(c - n % 26 + 26);}}elseif (c >= 'A' && c <='Z'){// c 为大写字母if (c - n % 26 >='A'){// 解密后还为大写字母str[i] = (char)(c - n % 26);}else{// 解密后不为大写字母了,循环大写字母,处理为大写字母str[i] = (char)(c - n % 26 + 26);}}else{// 不是字母,不加密str[i] = c;}}// 输出解密后的字符串printf("\nAfter decode: \n");puts(str);}int main(){char str[20];int n;printf("请输入字符串(以空格结束输入):\n");gets(str);printf("请输入密钥(1-25的整数):\n");scanf("%d", &n);printf("加密前的字符串为:%s\n", str);encode(str, n);printf("加密后的字符串为:%s\n", str);decode(str, n);printf("解密后的字符串为:%s\n", str);return 0;}```在上述代码中,加密函数`encode()`通过将字符串中的每个字符循环向后移动`n`位实现加密,解密函数`decode()`通过将字符串中的每个字符循环向前移动`n`位实现解密。

c语言实现加密解密

c语言实现加密解密

c语言实现加密解密加密程序代码:#include<stdio.h>main(){char c,filename[20];FILE *fp1,*fp2;printf("请输入待加密的文件名:\n"); scanf("%s",filename);fp1=fopen(filename,"r");fp2=fopen("miwen.txt","w");do{c=fgetc(fp1);if(c>=32&&c<=126){c=c-32;c=126-c;}if(c!=-1)fprintf(fp2,"%c",c);}while(c!=-1);}解密程序代码:#include<stdio.h>#include<string.h>main(){char c,filename[20];char yanzhengma[20];FILE *fp1,*fp2;printf("请输入待解密文件名:\n"); scanf("%s",filename);printf("请输入验证码:\n");scanf("%s",yanzhengma);if(strcmp(yanzhengma,"shan")==0) {fp1=fopen(filename,"r");fp2=fopen("yuanwen.txt","w"); do{c=fgetc(fp1);if(c>=32&&c<=126){c=126-c;c=32+c;}if(c!=-1)fprintf(fp2,"%c",c);}while(c!=-1);}else{printf("验证码错误!请重新输入:\n");scanf("%s",filename);}}运行结果:文件加密:如需要加密的文件名为yusnwen.txt,则屏幕显示为:如yuanwen.txt内容为:qing dao li gong da xue tong xin yu dian zi gong cheng xue yuan 2006 ji dain zi xin xi gong cheng zhuan ye2009 05 17加密后得到的密文miwen.txt为:-507~:=/~25~7/07~:=~&)9~*/07~&50~%)~:5=0~$5~7/07~;6907~&)9~%)=0~lnnh~45~:=50~$5~&50~&5~7/07~;6907~ $6)=0~%9~~~lnne~ni~mg文件解密:如需解密的文件即为上面加密后的文件miwen.txt,则:当验证码正确时,屏幕显示:得到的原文如加密时的原文。

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

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

c语言课程设计-文件加密解密(含源代码)
概述
本文主要介绍如何使用c语言进行文件的加密和解密操作,同时提供相应的源
代码。

文件加密是一种保护文件数据的方法,使得未经许可的用户无法读取或修改加密过的文件。

而文件解密则是将加密文档还原为可读的文件。

实现
本程序使用C语言实现文件的加密和解密操作,主要包括如下步骤:
1.读取待加密/解密的文件
2.处理文件数据,进行加密/解密操作
3.将处理后的数据写入到新的文件中
为了保证数据的加密强度,本程序使用了简单的异或运算进行加密/解密操作。

加密和解密时使用的密钥是相同的,用户可以自行指定。

程序会根据密钥对每个文件字节进行异或操作,加密后的文件字节和原文件字节不同,保证数据的安全性。

源代码
以下是文件加密和解密的C语言代码。

其中encrypt函数用于加密,decrypt
函数用于解密,用户需要根据不同的需求进行调用。

```c #include <stdio.h> #include <stdlib.h> #include <string.h>
//加密函数 void encrypt(const char* input_filename, const char*
output_filename, const char* key){ FILE input_file, output_file; char ch; int i = 0;
input_file = fopen(input_filename, \。

c文件加密课程设计

c文件加密课程设计

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

2. 学习文件加密的基本原理,理解加密算法在文件安全中的作用。

3. 掌握至少一种简单的加密算法,并能将其应用于文件加密。

技能目标:1. 能够独立编写c语言程序进行文件的读写操作。

2. 能够运用所学加密算法,实现文件内容的加密与解密。

3. 能够分析并解决文件加密过程中可能遇到的问题。

情感态度价值观目标:1. 培养学生的信息安全意识,使其明白保护个人隐私和数据安全的重要性。

2. 激发学生对计算机编程的兴趣,提高其学习主动性和探究精神。

3. 培养学生的团队协作意识,使其学会在小组合作中共同解决问题。

分析课程性质、学生特点和教学要求:1. 课程性质:本课程为信息技术课程,旨在教授学生文件加密的相关知识,提高学生的编程能力和信息安全意识。

2. 学生特点:学生处于高年级阶段,已具备一定的c语言基础,具有较强的学习能力和逻辑思维。

3. 教学要求:教师应注重理论与实践相结合,引导学生通过实际操作掌握文件加密技术,培养其解决问题的能力。

二、教学内容1. 文件操作基础:- 文件的概念与类型- 文件读写的基本函数(fopen、fprintf、fscanf、fclose等)- 文件指针的使用2. 加密算法原理:- 加密的基本概念- 常见加密算法(如凯撒密码、异或运算等)- 加密算法在文件安全中的应用3. 文件加密实现:- 选择一种简单加密算法- 编写c语言程序实现文件加密- 编写c语言程序实现文件解密4. 实践与拓展:- 分析加密文件的安全性- 探讨加密算法的破解方法- 优化加密算法,提高文件安全性教学内容安排和进度:第一课时:文件操作基础,学习文件的基本概念和读写函数。

第二课时:加密算法原理,了解加密概念和常见加密算法。

第三课时:文件加密实现,动手编写程序实现文件的加密与解密。

第四课时:实践与拓展,分析加密文件安全性,探讨优化加密算法。

实验报告 加密与解密(文件) 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.教学进度:按照教材的章节顺序进行教学,确保每个章节都有充分的时间进行讲解和练习。

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

C语言课程设计实验报告实验名称:文件加密解密院系:软件学院学号:日期:2012年9月3日—9月17日一:设计题目1:设计图形用户界面。

2:对文件进行加密并对加密文件进行保存。

3:对加密了的文件进行解密。

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

2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料)过程:首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。

先利用文本文件设计出加密解密的主要过程并能运行。

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

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

最后在写出的程序中加入图形用户界面,运用window,box,gotoxy等进行设计。

三:源代码#include <stdio.h> /* 标准输入、输出函数 */#include <stdlib.h> /* 标准库函数 */#include <string.h> //*字符串处理函数 */#include <ctype.h> /* 字符操作函数 */#include <conio.h>#include <dos.h>#define key_down 80#define key_up 72#define key_esc 1#define key_enter 28#define SIZE 1void box(int startx,int starty,int high,int width);int get_key();char buf[20*20*4];/*////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////加密解密 */void fun(char *list,char *sd) /*加密过程*/{FILE *fp1,*fp2;char buf[1000]; /*文件临时存放处*/register int ch;fp1=fopen("e:\list.txt","r"); /*用可读方式打开文件*/fp2=fopen("e:\sd.txt","w"); /*用可写方式创建一个文件*/if(fp1==NULL){printf("cannot open file\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;int l1,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 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(); break;}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 for jiemi: ");gotoxy(24+l1,5);scanf("%s",sd);gotoxy(24,10);printf("input file name for 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;}}window(1,1,80,25);gettext( 20,10,40,14,buf);textbackground(7);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);textbackground(3);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 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 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 for jiemi: ");gotoxy(24+l1,5);scanf("%s",sd);gotoxy(24,10);printf("input file name for 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(int startx,int starty,int high,int width) /*屏幕的建立*/{int i;gotoxy(startx,starty);putch(0xda);for (i=startx+1;i <width;i++)putch(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;i <width;i++)putch(0xc4);putch(0xd9);return;}四:心得体会通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习C语言,而且对于我学习任何一门课程都是很有益处的。

相关文档
最新文档