c语言程序设计文件加密解密范本模板.docx

上传人:b****6 文档编号:13843176 上传时间:2023-06-17 格式:DOCX 页数:24 大小:22.45KB
下载 相关 举报
c语言程序设计文件加密解密范本模板.docx_第1页
第1页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第2页
第2页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第3页
第3页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第4页
第4页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第5页
第5页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第6页
第6页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第7页
第7页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第8页
第8页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第9页
第9页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第10页
第10页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第11页
第11页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第12页
第12页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第13页
第13页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第14页
第14页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第15页
第15页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第16页
第16页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第17页
第17页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第18页
第18页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第19页
第19页 / 共24页
c语言程序设计文件加密解密范本模板.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c语言程序设计文件加密解密范本模板.docx

《c语言程序设计文件加密解密范本模板.docx》由会员分享,可在线阅读,更多相关《c语言程序设计文件加密解密范本模板.docx(24页珍藏版)》请在冰点文库上搜索。

c语言程序设计文件加密解密范本模板.docx

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号,加粗,两端对齐)

在此说明每个部分的算法设计说明(可以是描述算法的流程图),每个程序中使用的存储结构设计说明(如

果指定存储结构请写出该存储结构的定义,如果用面向对象的方法,应该给出类中成员变量和成员函数原型

声明)。

(正文格式:

宋体,小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。

txt

3、其他要求

(1)变量、函数命名符合规范。

(2)注释详细:

每个变量都要求有注释说明用途;函数有注释说明功能,对参数、返回值也要以注释的形式说明用途;关键的语句段要求有注释解释。

(3)程序的层次清晰,可读性强。

4、需要掌握的知识

(1)如何读写文件

(2)如何对字符进行加减操作,并保证加减后的数值处于某一范围之内(模运算)

(3)了解加解密的基本原理

需求分析

模块分析:

(1)在屏幕上显示文件voidprinttxt()

用于将原始文件sourse.txt,加密文件result。

txt,解密文件recall。

txt,的内容显示在屏幕上,方便检验程序是否正确执行。

在此函数中要以输入方式打开三个文件。

(2)加密voidencode()

对原始文件sourse。

txt整个或部分字符串加密,并将加密后的内容写入result。

txt上。

加密时,每个字符依次反复加上”4963287312”中的数字,如果范围超过ASCII码值的032(空格)-122(‘z’),则进行模运算(即N%122)。

例如:

加密the

(t)116+4,(h)104+9,(e)101+6

变为xqk

(3)解密voiddecode()

对加密后的result。

txt进行解密,并将解密后的内容写入recall。

txt文件中.解密过程与加密过程的顺序正好相反,即从第一个字符开始,每个字符依次反复减去”4963287312”中的数字,若执行减法后得到一个负数,则把这个负数加122,即(N+122),其中N为负数。

例如:

把xqk解密

(x)120—4(q)111—9(k)107-6

变为the

(4)设置加密方法voidset()

由键盘输入,进行加密方法的设置,主要由输出输入语句组成,目的是为了方便人机交流.

(5)显示菜单:

*********************************

1.设置加密方法

2.加密

3。

解密

4.退出

*********************************

(6)加密方法用结构表示

structpassword/*加密方法*/

{

charps[10];/*加密字符串*/

longwd;/*加密的字节数*/

};

概要设计

1。

加密程序的设计:

开始,以输出方式打开加密文件,以输入方式打开原始文件,判断文件是否为空,若为空,对字符串进行加密:

定义for循环,判断i值是否小于字符串的长度,是则进行加密运算,即将字符所对应的ASCALL码加上加密字符串所对应的数字减去48,得到的就是加密后的字符,如果范围超过ASCII码值的032(空格)—122(‘z’),则进行模运算(即N%122),将加密后的文字写入加密文件,关闭打开的两个文件,屏幕显示加密成功。

如果文件不为空,则对文件中字符加密,加密过程与上述加密过程相似。

2。

解密程序的设计:

开始,以输出方式打开解密密文件,以输入方式打开加密文件,对加密后的文件中的字符串进行解密:

定义for循环,判断i值是否小于字符串的长度,是则进行加密运算,即将字符所对应的ASCALL码减去加密字符串所对应的数字加上48,得到的就是解密后的字符,若执行减法后得到一个负数,则把这个负数加122,即(N+122),其中N为负数.将解密后的文字写入解密文件,关闭打开的两个文件,屏幕显示解密成功。

3.显示程序的设计:

以输入方式打开原始文件,加密文件,解密文件,将文件中进行的字符串读入到屏幕上,方便读者进行比较。

编译连接后得到可执行文件(B10080128—加密解密处理.exp)

源程序代码

#include

#include

#include〈stdio.h〉

structpassword/*加密方法*/

{

charps[10];/*加密字符串*/

longwd;/*加密的字节数*/

};

structpasswordpassword;//定义一个加密方法结构变量

chars[100];

voidset()//加密方法设置函数

{

printf(”\n输入加密字符串:

");

scanf("%s",password.ps);

printf(”\n输入加密字节数:

");

scanf("%ld”,&password.wd);

getchar();

system("pause");/*按任意键继续,使界面整洁*/

voidprinttxt()/*显示显示原始文件和解密文件函数*/

/*以读方式打开文件*/

FILE*source=fopen(”source.txt",”rt”);//打开原始文件

FILE*result=fopen(”result。

txt",”r”);

FILE*recall=fopen("recall.txt”,"rt”);//打开解密文件

charc;//临时字符存储变量

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”);

voidencode()/*加密*/

intm,n=strlen(password.ps),i,flag=1;//m存储加密字符长度,n存储加密字符串,i为临时变量

charN,w;

charc,C;//临时字符存储变量

FILE*result=fopen(”result。

txt",”wt");//以写方式打开result.txt文件

FILE*source=fopen("sourse。

txt",”wt”);//以写方式打开source.txt文件

if(result==NULL)//文件非空容错处理

{

printf("不存在result.txt文件\n”);

exit(0);

}//ofstreamout("result。

txt”);

if(source==NULL)//文件非空容错处理

{

printf(”不存在source。

txt文件\n”);

flag=0;

//ifstreamfw("sourse。

txt”);

//ifstreamfs(s,ios:

:

nocreate);

if(flag=1)C=fgetc(source);//先得到一个文件内容

if(flag==0||C==EOF)//判断文件是否为空,为空的话,对输入字符加密

{

printf(”请输入要加密的字符串:

\n”);

scanf(”%s”,s);

m=strlen(s);/*对输入的字符串加密*/

fprintf(source,"%s",s);//将输入字符输出至source文件中

for(i=0;i

staticinta=0;

if(a

{

N=s[i]+password。

ps[a%n]—48;

if(N>122)

{

N=N%122;

}

fputc(N,result);//将加密内容输出入result中

a++;

}

elsefputc(s[i],result);//将加密内容输出入result中

else//文件非空,对文件加密

w=C+password.ps[0%n]-48;

fputc(w,result);//将加密结果输出至result文件中

for(i=0;(c=fgetc(source))!

=EOF;i++)

staticinta=1;

if(a

wd)

N=c+password.ps[a%n]—48;

if(N>122)

{

N=N%122;/*模运算*/

}

fputc(N,result);//out.put(N);

a++;

}

elsefputc(N,result);

}

printf("\n加密成功!

\n");

//关闭文件

fclose(result);

fclose(source);

system(”pause”);

}

voiddecode()/*解密*/

{

FILE*recall=fopen("recall。

txt",”wt”);/*以写方式打开文件*/

FILE*result=fopen(”result。

txt”,"rt");/*以读方式打开文件*/

charc,N;//临时变量

intn=strlen(password.ps),i;//n存储加密字符串长度,i为临时变量

//文件存在性判断

if(result==NULL)

{

printf(”不存在result.txt文件\n");

exit(0);

if(recall==NULL)

{

printf(”不存在result.txt文件\n");

exit(0);

for(i=0;(c=fgetc(result))!

=EOF;i++)//对加密文件进行译码

staticinta=0;

if(a〈password.wd)

{

N=c—(password.ps[a%n]—48);

if(N〈0)

N=(N+122)%122;/*模运算*/

fputc(N,recall);

else

if(N==0)fputc('z’,recall);//将解密结果输出至recall文件

elsefputc(N,recall);

}

a++;

}

elsefputc(N,recall);//

}

printf(”\n解密成功!

\n”);

//关闭文件

fclose(result);

fclose(recall);

system(”pause”);

voidcmptxt()/*比较解密文件和原始文件的一致性,一致输出原字符,不一致输出'-’*///在程序中没有调用

{

/*以读方式打开文件*/

FILE*source=fopen(”sourse.txt”,”rt");//打开原始文件

//FILE*result=fopen("result.txt”,”r”);

FILE*recall=fopen(”recall.txt","rt”);//打开解密文件

charc,d;//临时字符存储变量

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);//先从原始文件读出一个字符,若不是文件结尾,则文件内容非空

d=fgetc(recall);//先从解密文件读出一个字符,若不是文件结尾,则文件内容非空

if(c==EOF)//文件内容为空,输出加密字符

printf("读文件错误!

\n”);

exit(0);

}

if(d==EOF)//文件内容为空,输出加密字符

{

printf(”读文件错误!

!

\n");

exit(0);

printf("文件比较:

");

if(c==d)

{

printf("%c",c);

}

elseprintf("—”);

while((c=fgetc(source))!

=EOF&&(c=fgetc(source))!

=EOF)//文件非空调用判断

if(c==d)

printf("%c”,c);

elseprintf("—");

}

printf(”\n");

/*下面是文件关闭操作*/

fclose(source);

//fclose(result);

fclose(recall);

system(”pause”);

 

voidmenu()//主菜单

printf("\n********************\n");

printf("1。

设置加密方法\n");

printf("2.加密\n”);

printf(”3.解密\n");

printf("4.显示文件\n”);

printf(”5。

退出\n");

printf("\n********************\n");

printf("请选择:

");

}

 

voidmain()

inta=0;

/*

FILE*f1=fopen(”source。

txt”,”wt");//创建文件

FILE*f2=fopen(”result。

txt”,”wt”);

FILE*f3=fopen("recall.txt","wt”);

fclose(f1);fclose(f2);fclose(f3);//关闭文件*/

menu();

while(a!

=5)

scanf("%d”,&a);

switch(a)

{

case1:

set();//调用设置加密方法函数

system(”cls”);//清楚屏幕上的字符,是屏幕更整洁

menu();break;

case2:

encode();//调用加密函数

system("cls”);

menu();break;

case3:

decode();//调用解密函数

system("cls”);

menu();break;

case4:

printtxt();//显示原始文件与目标文件

system("cls");

menu();break;

case5:

printf(”\n谢谢使用!

\n\n”);break;

default:

printf("\n输入错误请再次输入\n”);

system("cls”);

menu();break;

}

六、测试数据及其结果分析

测试数据记录:

请输入需要加密的内容:

the

***************

1.设置加密方法

2。

加密

3.解密

4。

显示文件

5.退出

****************

请选择:

1

输入加密字符串:

496

输入加密字节数:

3

请按任意键继续.。

...。

***************

1.设置加密方法

2。

加密

3.解密

4.显示文件

5.退出

****************

请选择:

2

加密成功!

请按任意键继续.。

.。

***************

1.设置加密方法

2.加密

3。

解密

4.显示文件

5.退出

****************

请选择:

3

解密成功!

请按任意键继续.。

***************

1。

设置加密方法

2.加密

3。

解密

4。

显示文件

5。

退出

****************

请选择:

4

原始文件:

the

加密文件:

xqk

解密文件:

the

请按任意键继续.。

....

原文件为空时:

***************

1。

设置加密方法

2.加密

3.解密

4。

显示文件

5.退出

****************

请选择:

1

输入加密字符串:

496

输入加密字节数:

3

请按任意键

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2