PDA

Visualizza la versione completa : [C] Crittografare e decrittografare un file di testo


vince001
03-07-2014, 17:35
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 :dh:. 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...:confused::bh:
spero che qualcuno mi possa dare una mano.
Di seguito il 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);

}

oregon
03-07-2014, 23:26
Beh,

char* buffer[BUFFERSIZE];

un vettore di puntatori a char non un vettore di char ...

vince001
05-07-2014, 13:18
Risolto in un'altra maniera, grazie lo stesso

oregon
05-07-2014, 14:25
Prego, ma non era questione di maniera ... in quel codice quello era un errore.

vince001
05-07-2014, 14:38
Fortunatamente il codice originario non era il mio ;):D

vince001
05-07-2014, 16:50
Scherzavo, come avevo fatto io non funziona :dh::facepalm:.
Sostituendo


char* buffer[BUFFERSIZE]
con
char buffer[BUFFERSIZE]

funziona?

oregon
05-07-2014, 19:30
Non devi chiedere se funziona o no ma capire cosa

char* buffer[BUFFERSIZE]

e cosa invece


char buffer[BUFFERSIZE]

E soprattutto, prova e dicci tu se funziona ...

Loading