int main(int argc, char *argv[]) { char *infname; char *outfname; const unsigned char *key; FILE *infp, *outfp; key = argv[3]; if(argc>1) infname=argv[1]; //else usage(argv[0]); if(!(infp=fopen(infname, "rb"))) { fprintf(stderr, "ERROR: fopen(%s)\n", argv[1]); exit(1); } if(argc>2) outfname=argv[2]; else { if(!(outfname=malloc(strlen(infname)+5))) { fprintf(stderr, "ERROR: malloc failed\n"); exit(1); } strcpy(outfname, argv[1]); strcat(outfname, ".xor"); } if(!(outfp=fopen(outfname, "wb"))) { fprintf(stderr, "ERROR: fopen(%s)\n", outfname); exit(1); } //key= "this is naru catch me if you can"; xorcipher(key, infp, outfp); fclose(outfp); fclose(infp); if(argc<4) free(outfname); return 0; }
int main(int argc, char *argv[]) { char *infname; char *outfname; //const unsigned char *key; const unsigned char key[100] = {0}; FILE *infp, *outfp; const int buffer_size = 1024*1024; char *inbuffer; char *outbuffer; int numr,numw; if(argc<2) usage(argv[0]); infname = argv[1]; if(!(infp=fopen(infname, "rb"))) { fprintf(stderr, "ERROR: fopen(%s)\n", argv[1]); exit(1); } if(argc>2) outfname=argv[2]; else { if(!(outfname=(char*)malloc(strlen(infname)+5))) { fprintf(stderr, "ERROR: malloc failed\n"); exit(1); } strcpy(outfname, argv[1]); strcat(outfname, ".xor"); } if(!(outfp=fopen(outfname, "wb"))) { fprintf(stderr, "ERROR: fopen(%s)\n", outfname); exit(1); } //key = (const unsigned char*)getpass("Please enter a key: "); printf("Please enter a key: "); scanf("%s", key); inbuffer = (char*)malloc(buffer_size); if(!inbuffer) { fprintf(stderr, "ERROR: buffer malloc failed\n"); exit(1); } outbuffer = (char*)malloc(buffer_size); if(!outbuffer) { fprintf(stderr, "ERROR: buffer malloc failed\n"); exit(1); } while(!feof(infp)) { numr=fread(inbuffer,1,buffer_size,infp); if(numr!=buffer_size) { if(ferror(infp)!=0) { fprintf(stderr,"read file error.\n"); exit(1); } else if(feof(infp)!=0); } xorcipher(key, inbuffer, outbuffer, numr); numw=fwrite(outbuffer,1,numr,outfp); if(numw!=numr) { fprintf(stderr,"write file error.\n"); exit(1); } } fclose(outfp); fclose(infp); free(inbuffer); free(outbuffer); if(argc<3) free(outfname); return 0; }