參考網帖。
調用一次爲加密,對已經加密的文件再調用一次爲解密。
#include <stdio.h>
#include <string.h>
bool EncodeDecodeFile(const char* sfilesrc, const char* sfiledst)
{
if(NULL == sfilesrc || NULL == sfiledst)
{
return false;
}
bool ret = false;
static const char *szpwd = "u010300403";
static const int pwdlen = strlen(szpwd);
register char ch;
FILE *fp1=fopen(sfilesrc,"rb");
FILE *fp2=fopen(sfiledst,"wb");
if(NULL != fp1 && NULL != fp2)
{
int pwdidx=0;
fread(&ch,1,1,fp1);
/*加密算法開始*/
while(!feof(fp1))
{
ch = ch^szpwd[pwdidx>=pwdlen?pwdidx=0:pwdidx++];
fwrite(&ch,1,1,fp2);/*異或後寫入fp2文件*/
fread(&ch,1,1,fp1);
}
ret = true;
}
if(NULL != fp1)fclose(fp1);/*關閉源文件*/
if(NULL != fp2)fclose(fp2);/*關閉目標文件*/
return ret;
}
int main(int argc, char** argv)
{
if(argc != 3)
{
FILE* perr = fdopen(2,"w+");
fprintf(perr,"Usage:%s srcfile dstfile\n",argv[0]);
fclose(perr);
return 0;
}
EncodeDecodeFile(argv[1],argv[2]);
return 1;
}