程序设计及应用课程设计Word文件下载.docx
《程序设计及应用课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《程序设计及应用课程设计Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
文件加密
文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。
加密算法,密钥设计由同学自己选择现有的加密解密算法或是自己设计。
要求:
(1)对文件的字符根据加密算法,实现文件加密。
(2)对操作给出必要的提示。
(3)对存在的file1.txt文件,必须先打开,后读写,最后关闭。
加密后的文件放在file2.txt。
(4)解密文件保存在file3.txt中。
2.设计目的:
文件的传输会有明文和密文的区别,明文发送是不安全的,易遭到黑客拦截。
现要求编写一个程序实现文本文件的加密和解密操作。
3.要求:
(1)用户可选择是“加密文件”还是“解密文件”操作;
(2)加密文件:
用户输入明文文件名(待加密文件,该文件必须在磁盘存在)和密文文件名(加密后目标文件),系统能够打开明文源文件,每次读取源文件单个字节(直至读到文件结束),并与用户输入的密钥通过异或运算进行加密,加密后存入目标文件中;
(3)解密文件:
用户输入密文文件名(待解密文件,该文件必须在磁盘存在)和明文文件名(解密后目标文件),系统能够打开密文源文件,每次读取源文件单个字节(直至读到文件结束),并与用户输入的密钥通过异或运算进行解密,解密后存入目标文件中。
一、设计思路和分析过程
/*采用结构化程序设计思想,把系统的功能划分为哪几个模块,为实现每个功能模块设计了哪些函数及函数的作用说明*/
程序分为三个模块:
主函数菜单模块、“加密文件”模块、“解密文件”模块。
“加密文件”模块对应voidfun1()、“解密文件”模块对应fun2()。
Fun1()实现“加密文件”,根据要加密文件内容与key异或得到加密文件,并保存的第二个程序中去形成新的加密文件。
fun2()计算“解密文件”,根据要解密文件内容与key异或得到解密文件,并保存的第二个程序中去形成新的解密后的文件。
二、程序流程图
三、程序代码
#include<
stdio.h>
voidfun1()
{
FILE*fp1,*fp2;
charkey,ch;
charfilename1[50],filename2[50];
printf("
Pleaseinputorginalfilenamen:
"
);
menu21:
gets(filename1);
if((fp1=fopen(filename1,"
rt"
))==NULL)
%sopenError!
filename1);
gotomenu21;
}
Pleaseinputtargetfilenamen:
menu22:
gets(filename2);
if((fp2=fopen(filename2,"
wt+"
filename2);
gotomenu22;
Pleaseinputkey:
getche(key);
\n"
while((ch=fgetc(fp1))!
=EOF)
ch=ch^key;
fputc(ch,fp2);
fclose(fp1);
fclose(fp2);
Decryptionsuccess!
voidfun2()
voidfun3()
FILE*fp;
charch,filename[50];
printf("
Pleaseenterthefilename:
gets(filename);
if((fp=fopen(filename,"
r"
{
printf("
Can'
topenthisfile!
exit(0);
ch=fgetc(fp);
while(ch!
putchar(ch);
ch=fgetc(fp);
}
fclose(fp);
main()
menu:
Plasechooseaoption:
1.Encryptionafile.\n"
2.Decryptionafile.\n"
3.Opentheencryptionfile.\n"
0.Exittheapplication.\n"
switch(getch())
case'
1'
:
fun1();
break;
2'
fun2();
3'
fun3();
0'
exit(0);
gotomenu;
四、程序的调试过程及运行结果
最后的key无法获取,使得其加密的后文件,并未加密,而是实现复制功能。
发生错误的原因:
(1)由于把gets(filenmaen1);
输成了getc(filenmaen1);
(2)由于把getche(key);
输成了getch(key);
1.程序目录:
2.文件加密:
3.文件解密
4.打开加密文件
5.加密解密text文件
五、课程设计总结
经过2个礼拜的程序设计学习,很大程度上的让我更深刻的理解的C语言在实际上的运用,及其灵活。
尤其在文件的存储和结构体模块,大大加强了我对概念和小细节的理解和把握。
同时也让我知道的编程的艰辛,以后的路任重而道远。
总之,这次课程设计让我收益非浅。
对我将来的学习很有帮助。