加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

C语言实现字符串的异或校验

(2017-03-03 08:44:27)
分类: C编程

#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);

   }

}

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有