#include #include void cript (char *, char *, int); /* Prototipo di funzione */ main(int argc, char *argv[]) { FILE *file1, *file2, *file3; char *tutto1, *tutto2, pad[16]; long file1lung, file2lung; int startpad; time_t secondi; if (argc<4) { printf("USO: %s file1 file2 file3:\n",argv[0]); printf("file1 - file JPG\n"); printf("file2 - file da nascondere\n"); printf("file3 - nome del file di Output\n"); exit(-1); } file1 = fopen(argv[1], "r"); if (file1 == NULL) { printf("Errore di apertura nel file %s\n",argv[1]); exit(-1); } file2 = fopen(argv[2], "r"); if (file2 == NULL) { printf("Errore di apertura nel file %s\n",argv[2]); exit(-1); } file3 = fopen(argv[3], "w"); if (file3 == NULL) { printf("Errore di apertura nel file %s\n",argv[3]); exit(-1); } /* Trova la lunghezza dei 2 files */ fseek(file1, 0, SEEK_END); file1lung = ftell(file1); rewind(file1); fseek(file2, 0, SEEK_END); file2lung = ftell(file2); rewind(file2); /* Legge il contenuto dei 2 files */ tutto1 = (char *) malloc(file1lung); fread(tutto1, 1, file1lung, file1); tutto2 = (char *) malloc(file2lung); fread(tutto2, 1, file2lung, file2); /* Crea la chiave che servira' per criptare i dati */ secondi = time(NULL); srand(secondi); startpad = rand(); startpad= startpad%(file1lung-16); strncpy(pad, tutto1+startpad, 16); /* Cripta i dati */ cript(tutto2, pad, file2lung); /* Crea il file scrivendo prima il file JPG e poi i dati criptati */ fwrite (tutto1, 1, file1lung, file3); fwrite (tutto2, 1, file2lung, file3); printf("Dati necessari per estrarre i dati:\n\nByte: %d\nPad : %d\n", file1lung, startpad); fclose(file1); fclose(file2); fclose(file3); } void cript (char *buff, char *pad, int lung) { int h; for (h = 0; h < lung; h++) { buff[h]^=pad[h%16]; } }