//文件加密与解密//
#include<stdio.h>
#include<stdlib.h>
#define M 1000  //预设一个指定文件大小的数字M,方便以后改变
void yiwei() ;
int main()
{
printf("\n$****本程序只能对英文文本进行加密解密操作,如有不便尽请谅解****$");
printf("\n$********文件移位加密与解密、二进制加密与解密 *****************$"); // 软件信息
printf("\n$************** 2010级电气与电子工程学院 **********************$"); //
printf("\n$****************电1005-1班 周晓鹏 王磊 ***********************$"); // 欢迎界面
printf("\n$**********  欢迎使用本软件,祝您使用愉快  ********************$"); //
printf("\n");
getchar();//输入任意字符后进行下一操作
system("cls");  //清屏操作
printf("\n$****本程序只能对英文文本进行加密解密操作,如有不便尽请谅解****$");
printf("\n");
printf("\n$******************退出程序输入:1*********************$"); // 欢迎界面
printf("\n");
printf("\n$***************移位加密与解密输入:2******************$"); //
printf("\n");
printf("\n$**************二进制加密与解密输入:3*****************$"); // 欢迎界面
printf("\n");
printf("\n$**********  欢迎使用本软件,祝您使用愉快  ************$"); //
printf("\n");
switch(getchar())
{
case '1': exit(0);break;
case '2': yiwei();break;
case '3':erjinzhi();break;
}
return 0;
}
/
*****************主函数结束*********************/
/***********调用移位加密解密函数*****************/
void yiwei()         
{
FILE * infile=NULL;      //输入文件指针
FILE * outfile=NULL;    //输出文件指针
int key;                //密钥
int operation=0;        //操作类型,加密---1,解密---2
char filename[100],tempfile[1000],data;
while(1)
{     
infile=outfile=NULL;
operation=0;   
//选择操作类型
while(!(operation==1||operation==2))
{
printf("请选择【加密---1  解密---2】:");
scanf("%d",&operation);
//处理非法输入
if(!(operation==1||operation==2))
printf("选择有误,请重新选择!\n");
}
/
/打开输入文件
while(infile==NULL)
{
printf("\n输入要打开的文件文件名称(完整路径):");
scanf("%s",filename);
//以只读方式打开文件流
infile=fopen (filename,"r");
//打开文件流失败,重新输入文件名
if(infile==NULL)
printf("\n无法打开文件,请检查文件是否存在后重新输入!");
}
/
/输入密钥
printf("\n输入密钥:");
scanf("%d",&key);
if(operation==1)
printf("\n输入保存加密后文件的名称(完整路径):");
else
printf("\n输入保存解密后文件的名称(完整路径):");
scanf("%s",filename);
//以读写方式打开输出文件
outfile=fopen (filename,"w+");
while((data=fgetc(infile))
!
=EOF)//逐个字符读出输入文件的内容
{
if(operation==1)    //加密
fputc(data+key,outfile);
else                //解密
fputc(data-key,outfile); 
}
//输出加密/解密的过程
if(operation==1)
printf("\n加密过程:");
else
printf("\n解密过程:");
rewind(infile);          //文件指针回到文件开始处
while((data=fgetc(infile))!=EOF)
printf("%c",data); 
printf(" --> ");
rewind(outfile);
while((data=fgetc(outfile))!=EOF)
printf("%c",data);
printf("\n\n");
fclose(infile);          //关闭文件流
fclose(outfile);
break;
}
printf("\n");
printf("\n*-·-·-感谢您的使用,欢迎再次使用-·-·-*\n\n"); // 使用完感谢语!
exit(0);
}
/*****************调用二进制加密解密函数*********************/
int erjinzhi()
{
FILE * infile=NULL;      //输入文件指针
FILE * outfile=NULL;    //输出文件指针
int key;                //密钥
int operation=0;        //操作类型,加密---1,解密---2
char filename[100],tempfile[1000],data;
while(1)
{     
infile=outfile=NULL;
operation=0;   
//选择操作类型
while(!(operation==1||operation==2))
{明解c语言
printf("请选择【加密---1  解密---2】:");
scanf("%d",&operation);
//处理非法输入
if(!(operation==1||operation==2))
printf("选择有误,请重新选择!\n");
}
//打开输入文件
while(infile==NULL)
{
printf("\n输入要打开的文件文件名称(完整路径):");
scanf("%s",filename);
//以只读方式打开文件流
infile=fopen (filename,"r");
//打开文件流失败,重新输入文件名
if(infile==NULL)
printf("\n无法打开文件,请检查文件是否存在后重新输入!");
}
//输入密钥
printf("\n输入密钥:");
scanf("%d",&key);
if(operation==1)
printf("\n输入保存加密后文件的名称(完整路径):");
else
printf("\n输入保存解密后文件的名称(完整路径):");
scanf("%s",filename);
//以读写方式打开输出文件
outfile=fopen (filename,"w+");
while((data=fgetc(infile))!=EOF)//逐个字符读出输入文件的内容
{
if(operation==1)    //加密
fputc(data^key,outfile);
else                //解密
fputc(data^key,outfile); 
}
/
/输出加密/解密的过程
if(operation==1)
printf("\n加密过程:");
else
printf("\n解密过程:");
rewind(infile);          //文件指针回到文件开始处
while((data=fgetc(infile))!=EOF)
printf("%c",data); 
printf(" --> ");
rewind(outfile);
while((data=fgetc(outfile))!=EOF)
printf("%c",data);
printf("\n\n");
fclose(infile);          //关闭文件流
fclose(outfile); 
break;
}
printf("\n");
printf("\n*-·-·-感谢您的使用,欢迎再次使用-·-·-*\n\n");
// 使用完感谢语!
exit(0);
return 0;
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。