C语言加密解密源程序代码

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

//文件加密与解密//
#include
#include
#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))
{
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;
}

相关文档
最新文档