#include char getbyte (FILE *fp) { char byte; fread (&byte, 1, 1, fp); return byte; } void putbyte (FILE *fp, char byte) { fwrite (&byte, 1, 1, fp); } void xorfile (FILE *ifp, FILE *ofp, char key[]) { unsigned kpos = 0; char byte; for (;;) { byte = getbyte (ifp); if (feof (ifp)) break; else { if (key[kpos]) kpos++; else kpos = 0; putbyte (ofp, (byte ^ key[kpos])); } } } int main (int argc, char *argv[]) { FILE *ifp, *ofp; char *key = argv[3]; if (argc <= 3) { puts ("XORCRYPT infile outfile key"); puts (" Encrypts/Decrypts a file using XOR operation."); puts (" Programmed by DISU \"1950\" DISU1950 in 2077."); return 1; } ifp = fopen (argv[1], "rb"); ofp = fopen (argv[2], "wb"); if (ifp && ofp) { xorfile (ifp, ofp, key); return 0; } puts ("Access was denied."); return 1; }