/**************CRYPT.C****************** Crittografia di un file tramite XOR (di Fischetti P.) ****************************************/ // // Crittografia di un file di tipo qualsiasi binario o text // viene utilizzata la semplice operazione logica XOR tra una chiave fornita // da tastiera e i dati del file. // La chiave non viene memorizzata. // Es. di uso: // Crypt.exe image.png image.zzz // crea il file .zzz criptato dopo aver inserito la chiave // se faccio: // Crypt.exe image.zzz image.png // ottengo il file di partenza dopo aver fornito la chiave // #include #include int crypt(char* key,char* iFile,char* oFile) { FILE *inf; FILE *ouf; unsigned long i=0; char c; inf=fopen(iFile,"rb"); if (!inf) return -1; ouf=fopen(oFile,"wb"); if (!ouf) return -1; while(1) { c = fgetc(inf); if feof(inf) break; if (strlen(key)>0) fputc(c ^ key[i++%strlen(key)],ouf); else fputc(c,ouf); } fclose(inf); fclose(ouf); } int readKey(char *key) { int c; int i=0; while(1) { c=getch(); if (c == 0x0D || c == 0x0A) { break; } putch('*'); key[i++]=c; key[i]=0; } return i; } int main(int argc, char *argv[]) { if (argc != 3) { printf("\nUsare: Crypt.exe filein fileout\n"); return -1; } char key[32]; printf("Insert KEY:"); if (readKey(key)>0) crypt(key,argv[1], argv[2]); return 0; }