sono approdato a questa nuova versione dello script...
esegue tutte le operazioni correttamente, ma prima di chiudersi da errore e si termina e non riesco a capire il motivo...
ancora grazie
codice:
#include <stdio.h>
int main (void){
long lbuffer = 60000; //determina sia il buffer di lettura che la lunghezza della chiave
char progkey = 100;
long xmega = 1048576/lbuffer;
printf("buffer impostato a %d bytes\n",lbuffer);
char nomefile[20];
printf("nome del file da crittografare:");
scanf("%s",nomefile);
printf("%s!\n",nomefile);
char nomechiave[20];
printf("nome del file chiave:");
scanf("%s",nomechiave);
printf("%s!\n",nomechiave);
//preparazione della chiave
char *kbuf;
kbuf = new char [lbuffer];
char *chiave;
chiave = new char [lbuffer];
FILE *keyfile;
if ((keyfile = fopen(nomechiave, "rb")))
{
size_t a;
long x=0;
while( a = fread( kbuf, 1, lbuffer, keyfile) ) {
x=x+lbuffer;
/* ciclo di creazione chiave */ int y;
for(y=0;y<=a;y++) chiave[y]=chiave[y]+kbuf[y];
if((x%xmega)==0) //informazioni sullo stato del processo
printf("creazione chiave: %dMb analizzati\n",(x/1048576));
}
fclose(keyfile);
}
printf("\n\nchiave creata!!!!!\n\n");
//inizio processo per la scrittura del nuovo file
char *buf;
buf = new char [lbuffer];
FILE *f, *f_out;
if ((f = fopen(nomefile, "rb")) && (f_out = fopen("cript.crp", "wb")))
{
size_t b;
long x=0;
while( b = fread( buf, 1, lbuffer, f) ) {
x=x+lbuffer;
/* ciclo di cifratura */ int y;
for(y=0;y<=b;y++) buf[y]=buf[y]+chiave[y]+progkey;
if((x%xmega)==0) //informazioni sullo stato del processo
printf("%dMb\n",(x/1048576));
fwrite( buf, 1, b, f_out);
}
fclose(f);
fclose(f_out);
}
return 0;
}