/**********************************************************
* Copyright (c) 2012年9月4日 * All rights reserved.
* 文件名:Encryptiom.c
* 功能描述:移位加密与解密文件。
* 作 者:djky12
* 版 本:V1.0
* 日 期:2012-09-04
* 其他说明:
* 函数列表:
* 1.void encryption(char *file):给file文件进行加密
* 2.void decryption(char *file,char *file2, int key): 给file文件进行解密,虚拟主机,并把解密后的结果保存在file2中
* 3.void PrintEncry():打印输出指导用户进行加密操作
* 4.void PrintDecry():打印输出指导用户进行解密操作
* 修改记录:
*
**********************************************************/
#include<stdio.h>
#include<stdlib.h>
#define KEY 20 //加密密码
void encryption(char *file); //声明加密函数
void decryption(char *file,char *file2, int key); //声明解密函数
void PrintEncry(); //声明打印加密函数信息
void PrintDecry(); //声明打印解密函数信息
void main()
{
int choose = 0; //choose是选择加密操作,还是解密操作标记
int flag = 1; //标记变量
char ch;
while(flag==1)
{
/*提示用户该进行的操作*/
printf(“\n\t\t*****************文件移位加密与解密*****************”);
printf(“\n\n*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*\n\n”);
printf(“\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n”);
printf(“\t | 文件加密请输入【1】 文件解密请输入【2】 |\n”);
printf(“\t ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n”);
printf(” 请输入处理文件的方式: “);
scanf(“%d”,&choose); //选择是加密还是解密
fflush(stdin);
switch(choose) //若为1则进入加密,网站空间,为2则解密
{
case 1: //进行加密操作
PrintEncry();
break;
case 2: //进行解密操作
PrintDecry();
break;
}
flag=0; //标记清0
printf(“是否继续:”);
scanf(“%c”,&ch);
if(ch==’Y’||ch==’y’) //判断是否继续程序
flag=1; //如果选择继续,把flag置1
system(“cls”); //清屏
}
}
/**********************************************************
* 函数名:PrintEncry()
* 功能描述:打印输出指导用户进行加密操作
* 输 入:无
* 输 出:无
**********************************************************/
void PrintEncry()
{
char file1[20];
printf(“输入加密文件名:”);
scanf(“%s”,file1);
fflush(stdin);
encryption(file1); //进入加密核心函数
}
/**********************************************************
* 函数名:PrintDecry()
* 功能描述:打印输出指导用户进行解密操作
* 输 入:无
* 输 出:无
**********************************************************/
void PrintDecry()
{
int key2;
char file1[20],file2[20];
printf(“输入需要解密的文件名:”);
scanf(“%s”,file1);
fflush(stdin);
printf(“输入解密目的文件名:”);
scanf(“%s”,file2);
fflush(stdin);
printf(“输入解密密码:”);
fflush(stdin);
scanf(“%d”,&key2);
fflush(stdin);
if(key2!=KEY) //判断输入的密码是否和内定密码一致
printf(“解密码错误!\n”);
else
decryption(file1,file2,key2); //进入解密核心函数
}
/**********************************************************
* 函数名:void encryption(char *file)
* 功能描述:给file文件进行加密
* 输 入:无
* 输 出:无
**********************************************************/
void encryption(char *file)
{
FILE *fp; //定义指向文件的指针
char ch;
if((fp=fopen(file,”wb+”))==NULL)//以写二进制文件的形式打开文件file
{
printf(“Cannot open file strike any key exit!”);
getchar();
exit(1);
}
printf(“输入要加密的字符串:\n”);
ch=getchar()+KEY; //给每个字母加密
while (ch!=’\n’+KEY)
{
fputc(ch,fp);
ch=getchar()+KEY;
}
printf(“加密成功\n”);
fclose(fp); //关闭文件
}
/**********************************************************
* 函数名:decryption(char *file,char *file2,int key)
* 功能描述:解密文件,服务器空间,并把解密的结果存放在新文件中
* 输 入:char *file:需要解密的文件;char *file2:存放被解密后 * 的结果;int key:解密的密码
* 输 出:无
**********************************************************/
void decryption(char *file,char *file2,int key)
{
FILE *fp1,*fp2; //定义指向文件的指针
char ch;
if((fp1=fopen(file,”rb+”))==NULL)//以读二进制文件的形式打开文件file
{
printf(“Cannot open file strike any key exit!”);
getchar();
exit(2);
}
if((fp2=fopen(file2,”wb+”))==NULL)//以写二进制文件的形式打开文件flie2
{
printf(“Cannot open file strike any key exit!”);
getchar();
exit(1);
}
ch=fgetc(fp1)-key; //单个字符进行解密操作
while (ch+key!=EOF) //解密完成
{
fputc(ch,fp2); //把解密后的结果保存在file2中
ch=fgetc(fp1)-key;
}
printf(“解密成功\n”); //提示解密成功
fclose(fp1); //关闭文件
fclose(fp2);
}
最好的感觉就是你什么都跟我说。