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

合集下载

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语言程序设计加密解密

(完整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语言凯撒密码实现例子:```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语言文件加密解密报告文件加密解密的报告一、引言在现代信息技术的发展下,计算机与互联网的普及使得信息传输变得越来越方便快捷。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

文件解密加密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;}。

C语言课程设计-文件加密解密

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语言文本加密解密课程设计

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); }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档