#include
#include
#include
#include
void dofile(char *in_fname,char *password,char *out_fname)//文件加密函数
{
FILE *fp1,*fp2;
register char ch;
int i,j;
i=j=0;
fp1=fopen(in_fname,"rb");//只读方式打开
if(fp1==NULL)
{
printf("Cannot open in_file.\n");
exit(1);//无法打开则退出
}
fp2=fopen(out_fname,"wb");//只写方式打开
if(fp2==NULL)
{
printf("Cannot create out_file.\n");
exit(1);//无法建立则退出
}
while(password[++j]);
ch=fgetc(fp1);
//开始加密
while(!feof(fp1))
{
fputc(ch^password[i>=j?i=0:i++],fp2);//异或后写入fp2
ch=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
}
void main(int argc,char *argv[])
{ char in_fname[30];
char out_fname[30];
char password[8];
if(argc!=4)//容错处理
{
printf("\nIn-fname:\n");
gets(in_fname);//获取要加密的文件名
printf("Password:\n");
gets(password);//获取密码
printf("Out-file:\n");
gets(out_fname);//加密后的文件名
dofile(in_fname,password,out_fname);
}
else
{
strcpy(in_fname,argv[1]);
strcpy(password,argv[2]);
strcpy(out_fname,argv[3]);
dofile(in_fname,password,out_fname);
}
}