Ciao a tutti, sarò diretto e sincero, sto messo male con gli esami universitari e sto cercando di affrettare i tempi. Devo dare un progetto in C dove attraverso il cifrario di Vigenere, devo criptare una frase data dall'utente in un file txt e decriptarla in un altro txt tutto nello stesso programma. Ho basato il codice attraverso questi due file che trattano lo stesso problema mio, ma lui fa direttamente da linea di comando:
https://github.com/ProgrammazioneTime/Cifrario-Vigener
Questo invece è il codice che ho creato
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define n 14
void stampaAlfabeto(int c);
void messCifrato(char verme [n],int mod,int max);
void messDecifrato(char verme [n],int mod,int max);
int main(int argc, char *argv[]) {
int c,i;
int max,val,mod,salto;
char frase[100];
char verme[n+1];
FILE *input2;
printf("Inserisci la frase da cifrare: ");
fgets(frase,100,stdin);
max=strlen(frase);
printf("Inserisci il verme: ");
fgets(verme,max,stdin);
mod=strlen(verme)-1;
messCifrato(verme,mod,max);
printf("\n-->DESTINATARIO \n");
input2=fopen("TestoCifrato.txt","r");
fscanf(input2,"%c",frase[i]+val-salto);
fclose(input2);
messDecifrato(verme,mod,max);
printf("\n");
return 0;
}
void messCifrato(char verme[n+1],int mod,int max) {
int i,salto,val;
char frase[100];
FILE *output;
for(i=0 ,salto=0; i<max-1; i++,salto=0)
{
val = verme[i%mod] - 32;
if(frase[i] > 126-val)
{
salto=95;
}
printf("\n");
output=fopen("TestoCifrato.txt","w"); //apro il file
fprintf(output,"%c",frase[i]+val-salto);
fclose(output);
printf("\tTesto cifrato scritto su file: %c\n", frase[i]+val-salto);
}
}
void messDecifrato(char verme[n+1],int mod,int max) {
int i,salto,val;
char frase[100];
FILE *output2;
for(i=0 ,salto=0; i<max-1; i++,salto=0)
{
val = verme[i%mod] - 32;
if(frase[i] < 32+val)
{
salto=95;
}
output2=fopen("TestoDecifrato.txt","w");
fprintf(output2,"%c",frase[i]-val+salto);
fclose(output2);
printf("\tTesto decifrato scritto su file: %c\n", frase[i]-val+salto);
}
}
Sicuramente è sbagliata la funzione messCifrato, perché è lì che mi da parole casuali