Codificatore in C

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Shebang
Prode Principiante
Messaggi: 30
Iscrizione: sabato 2 maggio 2015, 17:55
Desktop: mate
Distribuzione: Ubuntu 14.04.2 LTS
Sesso: Maschile

Re: Codificatore in C

Messaggio da Shebang »

Sto pensando ad un'altra soluzione, cioè un controllo su ogni carattere prima dell'elaborazione degli stessi in modo tale che se ci sono coincidenze tra un carattere della chiave ed uno del testo, quello della chiave viene incrementato di 1 (oppure con il valore della lunghezza della chiave che è noto sia nella fase di cifratura che in quella di decifratura.. per fare una cosa un pò più crittografica) però è molto più elaborata come cosa perchè genera un altro tipo di problema;
se ho il testo cifrato con questo procedimento come faccio a fargli capire quando un carattere è stato incrementato per evitare coincidenze?
Come potrei risolvere?
Shebang
Prode Principiante
Messaggi: 30
Iscrizione: sabato 2 maggio 2015, 17:55
Desktop: mate
Distribuzione: Ubuntu 14.04.2 LTS
Sesso: Maschile

Re: Codificatore in C

Messaggio da Shebang »

Ho risolto alla fine chiedendo in un altro forum, la soluzione era quasi banale, cioè evitare il problema insito nella libreria string.h
Dato che la usavo solo per la sua funzione strlen, ci ho implementato solo la funzione strlen senza nient'altro.
Ora funziona come intendevo.

Codice: Seleziona tutto

#include <stdio.h>
#define MAX 1000


int lunghezza(char stringa[]){

	int i = 0;

	while(stringa[i]!=EOF){
	i++;
	}

return i;
}



    int main(){

       int i;
       char input1[MAX];
       char input2[MAX];
       char output1[MAX];
       char output2[MAX];

       printf("\nInserisci la frase: ");
       fgets(input1, sizeof(input1), stdin);
       input1[lunghezza(input1) - 1] = '\0';
       printf("\nLa frase inserita e': %s\n", input1);

       printf("\nInserisci la chiave: ");
       fgets(input2, sizeof(input2), stdin);
       input2[lunghezza(input2) - 1] = '\0';
       printf("\nLa chiave inserita e': %s", input2);

       for(i=0; i<lunghezza(input1); i++){
          output1[i] = input1[i] ^ input2[i%lunghezza(input2)];
       }
          output1[i] = '\0';

       printf("\n\nLa stringa cifrata e': '%s'\n", output1);

       for(i=0; i<lunghezza(output1); i++){
          output2[i] = output1[i] ^ input2[i%lunghezza(input2)];
       }
            output2[i] = '\0';

       printf("\n\nLa stringa decifrata e': '%s'\n\n", output2);

       system("PAUSE");

    return 0;
    }

Morale della storia: chi fa da sè fa per tre
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 6 ospiti