Salve a tutti, stavo facendo una funzione C che permette la codifica e la decodifica di un file di testo, ma non riesco a capire il motivo per cui non riesco ad ottenere il risultato voluto. Uso l'operatore XOR perché in tal modo riesco a recuperare il valore originario al momento della decrittografia
.
Inoltre in questo punto riporta un warning che non so come risolvere...
spero che qualcuno mi possa dare una mano.
Di seguito il codice:
codice:void crypt(char* filename_origin, char* filename_destination, int seed) { //DA VEDERE BENE FILE* fpr, *fpw; int i, num; int rnd; //////// char* buffer[BUFFERSIZE]; srand(seed); if((fpr = fopen(filename_origin, "rb")) == NULL){ fprintf(stderr,"Cannot open origin file\n"); exit(1); } if ((fpw = fopen(filename_destination, "wb")) == NULL) { fprintf(stderr,"Cannot open destination file\n"); exit(1); } while ((num = fread(buffer, 1, BUFFERSIZE, fpr)) != 0) { for(i=0; i < num; i++){ rnd = rand(); // buffer[i] ^= rnd; //Invalid operands to binary ^ buffer[i] = (char)((int) buffer[i] ^ rnd); //WARNING: ASSIGNMENT MAKES POINTER FROM INTEGER WITHOUT A CAST scanf("%c : %d\n",buffer[i], rnd); } fwrite(buffer, 1, num, fpw); } // fwrite(buffer, 1, num, fpw); fclose(fpr); fclose(fpw); }

. Uso l'operatore XOR perché in tal modo riesco a recuperare il valore originario al momento della decrittografia 
.

Rispondi quotando
.