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,对程序进行调试,找出并解决常见错误和异常,提高程序稳定性。
(完整word版)电子系c语言程序设计加密解密
课程设计报告课程设计名称: C语言程序设计指导教师:学生:学号:学院:电子信息工程学院完成时间: 2011年9月27日嘉应学院电子信息工程学院1C语言课程设计说明书目录1 需求分析 (1)2总体设计 (2)3详细设计 (3)3.1 换位加密流程图 (3)3.2 换位解密流程图 (4)3.3 替代加密流程图 (5)3.4 替代解密流程图 (6)4调试与测试 (8)5测试结果 (8)6附录 (11)I1 需求分析问题描述(实验指导书中已经给出)①数据的输入和输出;要求使用文件操作。
文件(明文,仅限于英文字母)存放在某一已知文本文件中,加密后的文件(密文)存放在另一文件中。
②换位加密和解密:加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文;③凯撒加密和解密:加密:根据密钥(即移位位数,用户从键盘输入)将对应字符进行移位操作,输出密文;解密:输入密文后再输入移位位数则可输出明文;④统计单词的个数;⑤退出。
2总体设计(程序设计总流程图,可以画带流程线的流程图)此处只需要写出一个流程图就可以了,就是总的那个流程图,请规范的画图。
不需要分出2.1和2.2.开始welcome()caidan()transpen( ); transpde()caesaren()caesarde() mingwent miwentongji(byebye()3详细设计(各模块功能说明,如函数功能、入口及出口参数说明,函数调用关系描述等这块大家问题最多了,这里不是写程序代码,而是写流程图里面各个主要函数的作用,函数之间关系的说明。
以第1题为例,此处应为:3.1 换位加密流程图流程图(对流程图加以说明。
可以把关键语句放在此处,加以注释说明) 建立mingwen.txt 和miwen.txt 文件输入密钥n输入明文到数组rk=strlen(r)j 计算数组r 长度for i=0 to k关闭并保存mingwen.txt 文件打开mingwen.txt 文件space(h,r) 将明文去空格并放到数组h 中m=strlen(h) 计算数组h 长度m%n==0是 否hang=m/n hang=m/n+1 j=0for i=0 to hang for i=m to hang*nz=0fputc(r[i],mingwen) 将明文存放到mingwen.txt文件中for j=0 to n h[i]='a'+j j++for i=0 to hangzl[i][j]=h[z] z++ for j=o to nzl[i][j]=h[z]z++for i=0 to nfor j=0 to hanghe[z]=zl[j][i]输出he[z]z++fputc(zl[j][i],miwen)fclose() 关闭并保存mingwen.txt文件fclose() 关闭并保存miwen.txt文件清屏返回菜单3.2 换位解密流程图流程图(对流程图加以说明。
C语言加密与解密算法
C语言加密与解密算法在计算机科学与信息安全领域,加密与解密算法起着至关重要的作用。
加密算法用于将原始数据转换为不可读的密文,而解密算法则用于将密文还原为可读的原始数据。
C语言是一种常用的编程语言,具备高效性和灵活性,适用于加密与解密算法的开发。
本文将介绍几种常用的C语言加密与解密算法。
一、凯撒密码算法凯撒密码算法是一种最简单的替换加密算法,通过将字母按照固定的偏移量进行替换来实现加密与解密。
以下是一个简单的C语言凯撒密码实现例子:```c#include <stdio.h>void caesarEncrypt(char* message, int key) {int i = 0;while (message[i] != '\0') {if (message[i] >= 'a' && message[i] <= 'z') {message[i] = (message[i] - 'a' + key) % 26 + 'a';} else if (message[i] >= 'A' && message[i] <= 'Z') {message[i] = (message[i] - 'A' + key) % 26 + 'A';}i++;}}void caesarDecrypt(char* message, int key) {int i = 0;while (message[i] != '\0') {if (message[i] >= 'a' && message[i] <= 'z') {message[i] = (message[i] - 'a' - key + 26) % 26 + 'a'; } else if (message[i] >= 'A' && message[i] <= 'Z') {message[i] = (message[i] - 'A' - key + 26) % 26 + 'A'; }i++;}}int main() {char message[] = "Hello, World!";int key = 3;printf("Original message: %s\n", message);caesarEncrypt(message, key);printf("Encrypted message: %s\n", message);caesarDecrypt(message, key);printf("Decrypted message: %s\n", message);return 0;}```以上程序演示了凯撒密码的加密与解密过程,通过指定偏移量实现对消息的加密与解密。
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程序
#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;}。
C语言课程设计-文件加密解密
C语言程序设计课程设计计算1313班C语言程序设计课程设计大纲一、设计目的:通过课程设计,学会把相关的理论知识和实际应用相结合,锻炼了独立实践的能力;学会了查阅与设计相关资料的能力。
二、设计内容:设计题目:学生使用C语言设计程序,产生如下界面,0-6对应不同功能,若不用汉字,可用拼音或英文表示。
*************************************************************************************** * * 1--输入2--加密3--解密4--显示5—统计6—统计全部0--退出* * * ***************************************************************************************请选择(0--6):0.退出系统。
1.输入信息,并写入文本文件。
2.对给定的文件进行加密。
3.对给定的文件进行解密。
4.显示文本文件的内容。
5.统计某单词在文件中出现的次数。
*6. 统计在文件中各单词出现的次数(可选)。
三、设计思想:主要思想为由总到分,由上到下的逐级分配任务的思想。
通过主函数调用各个被调用的函数,再由被调用函数通过多个循环嵌套的使用实现各自的功能,最终达到程序的要求。
1.主函数中:先使用了switch选择结构来调用不同命令下所对应的被调用函数,其中包括:输入函数shuru(),加密函数jiami(),解密函数jiemi(),显示函数show(),统计函数count1()、count2。
在每个被调用函数中还多次调用了用来判断是否要继续的函数judge(),以达到循环的目的。
在主函数中还多次使用清屏命令system(“cls”),以及刷新全部流的命令flushall()、fllush(stdin)使调用函数后,界面保持清洁,提高了程序的易读性。
2.输入函数中:while((c=getchar())!=EOF)的使用能提示使用者结束的命令,并且通过fputc(c,fp)把一个字符c写到由文件指针fp指定的磁盘文件上。
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语言 文件加密解密
将文件将文件将文件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语言课程设计实验报告实验名称:文件加密解密院系:软件学院学号:日期:2012年9月3日—9月17日一:设计题目1:设计图形用户界面。
2:对文件进行加密并对加密文件进行保存。
3:对加密了的文件进行解密。
二:设计过程设计过程中遇到的困难和解决方法:1:不能很好地理解题意(通过老师的讲解)。
2:不知道如何设计加密解密程序(通过翻阅书籍和上网查找资料) 过程:首先通过学习老师提供的资料了解大致的设计过程并懂得运用一些以前没有学习过的c语言。
先利用文本文件设计出加密解密的主要过程并能运行。
知道如何运用fopen将原文件打开并用fread将原文件内容读出来,然后进行加密设计并将加密的数据用fwrite写进指定的文件中并保存。
然后读出加密的文件并解密并保存。
最后在写出的程序中加入图形用户界面,运用window,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=f getc(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"};/**界面的形式/ intke y,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);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 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;i <width;i++)< p="">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++)< p="">putch(0xc4);putch(0xd9);return;}四:心得体会通过这次的作业我觉得最大的收获是不仅把平时学习到的知识理解的更加透彻,而且使知识更加系统化,同时还把有些平时不太注意的小问题发现了出来,这不但有利于我学习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语言实现加密解密加密程序代码:#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语言实现文件的加密和解密操作,主要包括如下步骤:
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语言实现加密解密续--获得简单小软件编写程序,实现对文本的加密及解密,要求在加密及解密时的原文件名和密文名从键盘输入,并在解密时验证用户信息即操作权限。
加密程序代码:#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语言
实验报告---文件的加密与解密一、问题重述基于对各种加密算法的理解,结合各种加密、解密算法,选择合适的加密方法分别对文件进行加密和解密。
二、实验目的及要求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语言中加密与解密算法的实现方法,并探讨一些常用的加密算法。
一、加密算法的实现方法加密算法的实现可以采用C语言中的各种方法和技术。
下面列举了几种常用的加密算法实现方法:1. 移位加密算法移位加密算法是一种简单的加密算法,它通过将字符的ASCII码值向右移动若干位来实现。
例如,将字符'A'的ASCII码值向右移动1位,即可得到字符'B'的ASCII码值。
移位加密算法的实现如下:```cvoid encryptShift(char* message, int key) {int i = 0;while (message[i] != '\0') {message[i] = message[i] + key; // 向右移动key位i++;}}```2. 替换加密算法替换加密算法是通过将字符替换为其他字符来实现加密的。
替换加密算法可以使用预定义的映射表或通过自定义映射关系来实现。
例如,将字符'A'替换为字符'Z',将字符'B'替换为字符'Y',以此类推。
替换加密算法的实现如下:```cvoid encryptSubstitution(char* message) {int i = 0;while (message[i] != '\0') {if (message[i] >= 'A' && message[i] <= 'Z') {message[i] = 'Z' - (message[i] - 'A'); // 替换为对应的字符}i++;}}```3. 数字加密算法数字加密算法主要用于加密数字,例如将手机号码、银行账号等敏感数字进行保护。
c 语言实现加密解密文件
printf("\nPlease input filename to be encrypted:\n");
/*得到要加密的文件名*/
gets(sfilename);
/*得到加密后你要的文件名*/
printf("input filename to save the encrypted file:\n");
ch=(ch-'a'+25)%26+'a';
}
if((ch>='A')&&(ch<='Z'))
{
ch=ch^pwd;
ch=(ch-'A'+25)%26+'A';
}
fputc(ch,dfp);
}
}
void OutputFile(FILE *fp)
{
char ch;
while((ch=fgetc(fp))!=EOF)
gets(dfilename);
/*得到加密字符*/
printf("Please input your Password:\n");
//scanf("%c",&pwd);
pwd=getch();
/*屏幕以*来表示输入的加密字符*/
printf("*\n");
/*以只读方式打开要加密的文件*/
OutputFile(sfp);
/*建立加密后的文件*/
if((dfp=fopen(dfilename,"w+"))==0)
c语言程序设计文件加密解密
程序报告设计题目:加密解密处理程序设计报告的电子文档(B10080128—程序设计.doc )一.老师对作业要求。
1:对学生课程设计两周的纪律及提交内容的要求:(1)规定上机的时间内不得无故缺勤,有事需要向指导老师书面请假;(2)上机时禁止玩游戏,屡教不改者,实习成绩可为不及格;(3)每人手头准备一至两本C/C++的有关工具书,上机前作好充分的准备,包括事先写好主要算法的程序代码以保证充分利用上机的时间调试程序;(4)同组可以讨论思路,但是程序要自己完成,不可抄袭,若完全抄袭别人的,实习成绩可为不及格;(5)实习的最后阶段认真完成实习报告的电子文档。
报告内容不得少于15页。
(6)每个学生最后提交的材料:压缩文件一个,起名为:学号名_题目名.rar(如:B06020127_学生管理系统.rar)。
该压缩文件中包含下列几个文件:程序设计报告的电子文档(起名为:学号_程序设计.doc)、源程序文件(起名为:学号名_题目名.cpp,如:B06020127_学生管理系统.cpp)、原始数据文件(如:stud.dat)、编译链接后得到的可执行文件(起名为:学号名_题目名.exe)(7)请同学独立完成报告,若发现两份报告一模一样,则两人都按不及格论处,请各位同学珍惜自己的版权,也请指导老师严格把关。
附2:上机时间:每天上午8:00——11:20附3:成绩的评定根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。
等级为:优秀、良好、中等、及格、不及格。
附4:课程设计报告具体内容要求学生管理系统(题目格式:宋体,3号,加粗,居中对齐)一、课题内容和要求(格式:宋体,4号,加粗,两端对齐)该部分可参考前面给出的问题描述再加以细化一些(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)二、需求分析(格式:宋体,4号,加粗,两端对齐)在该部分中叙述每个模块的功能要求(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)概要设计(格式:宋体,4号,加粗,两端对齐)在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型声明)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序报告设计题目:加密解密处理程序设计报告的电子文档(B10080128—程序设计.doc )一.老师对作业要求。
1:对学生课程设计两周的纪律及提交内容的要求:(1)规定上机的时间内不得无故缺勤,有事需要向指导老师书面请假;(2)上机时禁止玩游戏,屡教不改者,实习成绩可为不及格;(3)每人手头准备一至两本C/C++的有关工具书,上机前作好充分的准备,包括事先写好主要算法的程序代码以保证充分利用上机的时间调试程序;(4)同组可以讨论思路,但是程序要自己完成,不可抄袭,若完全抄袭别人的,实习成绩可为不及格;(5)实习的最后阶段认真完成实习报告的电子文档。
报告内容不得少于15页。
(6)每个学生最后提交的材料:压缩文件一个,起名为:学号名_题目名.rar(如:B06020127_学生管理系统.rar)。
该压缩文件中包含下列几个文件:程序设计报告的电子文档(起名为:学号_程序设计.doc)、源程序文件(起名为:学号名_题目名.cpp,如:B06020127_学生管理系统.cpp)、原始数据文件(如:stud.dat)、编译链接后得到的可执行文件(起名为:学号名_题目名.exe)(7)请同学独立完成报告,若发现两份报告一模一样,则两人都按不及格论处,请各位同学珍惜自己的版权,也请指导老师严格把关。
附2:上机时间:每天上午8:00——11:20附3:成绩的评定根据学生平时的上机出勤情况、为上机所作的准备情况、上机时的表现、程序的完成情况、报告的完成情况、验收答辩时的表现等综合打分。
等级为:优秀、良好、中等、及格、不及格。
附4:课程设计报告具体内容要求学生管理系统(题目格式:宋体,3号,加粗,居中对齐)一、课题内容和要求(格式:宋体,4号,加粗,两端对齐)该部分可参考前面给出的问题描述再加以细化一些(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)二、需求分析(格式:宋体,4号,加粗,两端对齐)在该部分中叙述每个模块的功能要求(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)概要设计(格式:宋体,4号,加粗,两端对齐)在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型声明)。
(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)四、源程序代码(格式:宋体,4号,加粗,两端对齐)各个算法实现的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。
要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。
(正文格式:宋体,小4号,不加粗,两端对齐)五、测试数据及其结果分析(格式:宋体,4号,加粗,两端对齐)(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)六、调试过程中的问题(格式:宋体,4号,加粗,两端对齐)每个模块设计和调试时存在问题的思考(问题是哪些?问题如何解决?),以及算法的改进设想。
(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)七、课程设计总结(格式:宋体,4号,加粗,两端对齐)总结可以包括: 程序设计过程的收获、遇到的问题,遇到问题解决问题过程的思考、程序调试能力的思考,对该课程组织和考核方式的建议等。
(正文格式:宋体,小4号,不加粗,两端对齐,1.5倍行距)原始数据文件(stud.dat)课题内容和要求1.编写一个对字符文件(由数字或字母组成)进行加密解密的程序。
可以将所需要的内容(整个文件或者输入的一行字符)加密,也可以将存储的加密文件翻译回来。
例如加密时可以将选取内容的每个字符依次反复加上”4963287312”中的数字,如果范围超过ASCII码值的032(空格)—122(‘z’),则进行模运算(既N%122)。
解密与加密的顺序相反。
2、部分要求(1)从键盘输入要进行加密的一行字符串或者需要加密的文件名。
(2)显示菜单:*********************************1.设置加密方法2.加密3.解密4.退出*********************************(3)选择菜单,进行相应的操作。
加密方法是设置一加密字符串以及对文件的哪些部分进行加密;加密是将原始文件加密并保存到文件中;解密是将加了密的文件还原并保存到文件中,同时应比较与原始文件的一致性;显示是将文件在屏幕上显示出来,供人工校对。
(4)定义原始文件sourse.txt、加密文件result.txt和还原文件recall.txt3、其他要求(1)变量、函数命名符合规范。
(2)注释详细:每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。
(3)程序的层次清晰,可读性强。
4、需要掌握的知识(1)如何读写文件(2)如何对字符进行加减操作,并保证加减后的数值处于某一范围之内(模运算)(3)了解加解密的基本原理需求分析模块分析:(1)在屏幕上显示文件 void printtxt()用于将原始文件sourse.txt,加密文件result.txt,解密文件recall.txt,的内容显示在屏幕上,方便检验程序是否正确执行。
在此函数中要以输入方式打开三个文件。
(2)加密void encode()对原始文件sourse.txt整个或部分字符串加密,并将加密后的内容写入result.txt上。
加密时,每个字符依次反复加上”4963287312”中的数字,如果范围超过ASCII码值的032(空格)—122(‘z’),则进行模运算(即N%122).例如:加密the(t)116+4,(h)104+9,(e)101+6变为xqk(3)解密void decode()对加密后的result.txt进行解密,并将解密后的内容写入recall.txt 文件中。
解密过程与加密过程的顺序正好相反,即从第一个字符开始,每个字符依次反复减去”4963287312”中的数字,若执行减法后得到一个负数,则把这个负数加122,即 (N+122), 其中N为负数。
例如:把xqk解密(x) 120-4 (q)111-9 (k) 107-6变为 the(4)设置加密方法void set()由键盘输入,进行加密方法的设置,主要由输出输入语句组成,目的是为了方便人机交流。
(5)显示菜单:*********************************1.设置加密方法2.加密3.解密4.退出*********************************(6)加密方法用结构表示struct password /*加密方法*/{char ps[10]; /*加密字符串*/long wd; /*加密的字节数*/};概要设计1.加密程序的设计:开始,以输出方式打开加密文件,以输入方式打开原始文件,判断文件是否为空,若为空,对字符串进行加密:定义for循环,判断i值是否小于字符串的长度,是则进行加密运算,即将字符所对应的ASCALL码加上加密字符串所对应的数字减去48,得到的就是加密后的字符,如果范围超过ASCII码值的032(空格)—122(‘z’),则进行模运算(即N%122),将加密后的文字写入加密文件,关闭打开的两个文件,屏幕显示加密成功。
如果文件不为空,则对文件中字符加密,加密过程与上述加密过程相似。
2.解密程序的设计:开始,以输出方式打开解密密文件,以输入方式打开加密文件,对加密后的文件中的字符串进行解密:定义for循环,判断i值是否小于字符串的长度,是则进行加密运算,即将字符所对应的ASCALL码减去加密字符串所对应的数字加上48,得到的就是解密后的字符,若执行减法后得到一个负数,则把这个负数加122,即 (N+122), 其中N为负数。
将解密后的文字写入解密文件,关闭打开的两个文件,屏幕显示解密成功。
3.显示程序的设计:以输入方式打开原始文件,加密文件,解密文件,将文件中进行的字符串读入到屏幕上,方便读者进行比较。
编译连接后得到可执行文件(B10080128—加密解密处理.exp)源程序代码#include<string.h>#include<stdlib.h>#include <stdio.h>struct password /*加密方法*/{char ps[10]; /*加密字符串*/long wd; /*加密的字节数*/};struct password password; //定义一个加密方法结构变量char s[100];void set() //加密方法设置函数{printf("\n输入加密字符串:");scanf("%s",password.ps);printf("\n输入加密字节数:");scanf("%ld",&password.wd);getchar();system("pause"); /*按任意键继续,使界面整洁*/}void printtxt() /*显示显示原始文件和解密文件函数*/ {/*以读方式打开文件*/FILE *source = fopen("source.txt","rt"); //打开原始文件FILE *result = fopen("result.txt","r");FILE *recall = fopen("recall.txt","rt"); //打开解密文件char c; //临时字符存储变量if(source == NULL ) //文件存在性判断{printf("不存在 source.txt 文件\n");exit(0);}if(result == NULL ){printf("不存在 result.txt 文件\n");exit(0);}if(recall == NULL ) //文件存在性判断{printf("不存在 recall.txt 文件\n");exit(0);}c = fgetc(source); //先从原始文件读出一个字符,若不是文件结尾,则文件内容非空if(c ==EOF) //文件内容为空,输出加密字符{printf("\n加密字符:");printf("%s\n",s);}else //文件非空,输出原始文件{printf("\n原始文件:");printf("%c",c);while((c=fgetc(source)) != EOF) //文件非空调用判断printf("%c",c);}printf("\n");printf("\n解密文件:");while((c=fgetc(result)) != EOF) //文件非空,输出解密文件printf("%c",c);printf("\n");printf("\n");printf("\n解密文件:");while((c=fgetc(recall)) != EOF) //文件非空,输出解密文件printf("%c",c);printf("\n");/*下面是文件关闭操作*/fclose(source);//fclose(result);fclose(recall);system("pause");}void encode() /*加密*/{int m,n=strlen(password.ps),i,flag = 1; //m存储加密字符长度 ,n存储加密字符串 ,i 为临时变量char N,w;char c,C; //临时字符存储变量FILE *result = fopen("result.txt","wt"); //以写方式打开result。