C语言中十六进制字符串的异或校验,C语言实现字符串的异或校验.doc

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

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值