32.使用fread()/fwrite()实现对文件的加密与解密

//使用fread()/fwrite()实现对文件的加密与解密
/*
程序使用方法:
加密用法->  程序名     -c     src     dest
解密用法->  程序名     -d     src     dest
         argv[0]  argv[1] argv[2] argv[3]
*/

#define F_PRINT_ERR(e)\
do\
{\
    if(e == NULL)\
    {\
      printf("open error");\
      exit(-1);\
    }\
}\
while(0)

#include <stdio.h>

void encode(char* buf,int n)
{
    int i;
    for(i = 0;i<n;i++)
        buf[i]++;
}
void decode(char *buf,int n)
{
    int i;
    for(i = 0;i<n;i++)
        buf[i]--;
}


int main(int argc,char* argv[])
{
    if(argc != 4)
    {
        printf("use xx.exe -d[-c] src dest\n");
        exit(-1);
    }

    FILE* pfr = fopen(argv[2],"rb+");
    F_PRINT_ERR(pfr);

    FILE* pfw = fopen(argv[3],"wb+");
    fclose(pfr);
    F_PRINT_ERR(pfw);

    int buf[1024];
    int n;
    if(strcmp(argv[1],"-c") == 0)
    {
        while((n = fread((void*)buf,1,1024,pfr))> 0 )
        {
            encode(buf,n);
            fwrite((void*)buf,1,n,pfw);
        }
    }
    else if(strcmp(argv[1],"-d") == 0)
    {
        while((n = fread((void*)buf,1,1024,pfr))> 0 )
        {
            decode(buf,n);
            fwrite((void*)buf,1,n,pfw);
        }

    }
    else
        printf("arg error\n");

    fclose(pfr);
    fclose(pfw);


    return 0;
}

 

posted @ 2018-08-15 15:27  2018年8月10日注册  阅读(366)  评论(0编辑  收藏  举报