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; }