Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - come creare programma per criptare e decriptare in c
Forum - C/C++ - come creare programma per criptare e decriptare in c

Avatar
wasp2.0 (Normal User)
Newbie


Messaggi: 1
Iscritto: 10/08/2011

Segnala al moderatore
Postato alle 17:56
Mercoledì, 10/08/2011
avrei una domanda, vorrei programmare qualcosa in c per criptare e decriptare file, solo che non sono un professionista, programmo per hobby, e vorrei qualcuno che riuscisse ad aiutarmi e darmi degli input, spero che ci sia una persona disposta a questa rottura :) grazie in anticipo


Al mondo ci sono solo 10 tipi di persone: chi comprende il sistema binario e chi no
PM
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Up
2
Down
V
Segnala al moderatore
Postato alle 19:19
Mercoledì, 10/08/2011
Dipende dal tipo di criptatura che vuoi implementare, ma su questo ti conviene fare una ricerca veloce su google, ci sono vari metodi...

Per quanto riguarda l'implementazione vera e propria si può procedere in questo modo:
Mettiamo il caso che il file si un ".txt" ad esempio potresti prendere ogni carattere dal file, aggiungerci un valore e riscriverlo sul file in output criptato. Per decriptarlo prendi ogni carattere, sottrai quel valore e lo riscrivi.
Naturalmente il valore dev'essere costante.
Ora questo metodo è assolutamente ridicolo ma serve per iniziare a entrare nella logica.
Se il file è invece in un altro formato occorre aprirlo in "modalità" binaria.
In questo modo bisogna leggere con la funzione fread

fread(&Byte,1,sizeof(char),FilePointer);

e scorrere tutto il file per modificare gli elementi...e via via come prima.

EDIT:

Un esempietto può essere questo:

Codice sorgente - presumibilmente C/C++

  1. FILE *fpInput, *fpOutput;
  2. char Ch;
  3.  
  4. fpInput=fopen("fileInput.txt","r");
  5. fpOutput=fopen("fileOutput.txt","w");
  6.  
  7. while((Ch=fgetc(fpInput))!=EOF)
  8. {
  9.    switch(Ch)
  10.           {
  11.                case 'A': Ch=ChiavePerA; break;
  12.                case 'B': Ch=ChiavePerB; break;
  13.                ...
  14.           }
  15.    fputc(Ch,fpOutput);
  16. }
  17.  
  18. fclose(fpInput);
  19. fclose(fpOutput);



Questo server per i file testuali, per i file binari al posto di Ch=fgetc(fpInput)
usi fread(&Ch,1,1,fpInput) e al posto di fputc(Ch,fpOutpub) usi fwrite(&Ch,1,1,fpOutput). I file naturalmente devi aprirli in "rb" e "wb".

Ultima modifica effettuata da comina8 il 11/08/2011 alle 17:07
ok però bene o male la logica la conosco, in python lo fatto un programma del genere era molto banale: in pratica viene usato un dizionario in cui ogni lettera equivale a un simbolo, solo che io volevo anche degli esempi, se non chiedo troppo oppure una pagina su google che mi spiega come implementa - wasp2.0 - 11/08/11 02:13
Beh allora puoi usare direttamente lo stesso metodo...per quanto riguarda il linguaggio C hai problemi per l'algoritmo (difficile visto che l'hai già implementato) e per la sintassi? In quest'ultimo caso ti consiglio di studiarti prima un buon manuale e iniziare con semplici esempi... - comina8 - 11/08/11 11:18
bè mi sa che in questo caso mi serve solo un po' di allenamento con il linguaggio si per quanto riguarda le stringhe, bè grazie per l'aiuto spero di esserti utile un giorno.. - wasp2.0 - 11/08/11 16:34
PM
Avatar
popp109 (Normal User)
Rookie


Messaggi: 27
Iscritto: 27/11/2010

Up
0
Down
V
Segnala al moderatore
Postato alle 0:20
Giovedì, 11/08/2011
Salve sto creando un compilatore e quando vado a creare il binario dei vari sorgenti del mio linguaggio sono incomprensibili  ma sono ugualmente leggibili in alcune sue parti.Che sistema devo utilizzare per criptare quelle parti di codice visibile?devo farlo durante la creazione o dopo che il file è stato creato?
Ho provato a criptare leggendo lettera per lettera ma aumentano i tempi di compilazione.
grazie!!!;)


L'anno 1968 e' bastata la potenza di due Commodore-64 per lanciare con successo una nave spaziale sulla Luna.Il miglior processore di oggi serve a far girare  windows
PM
Avatar
comina8 (Normal User)
Pro


Messaggi: 86
Iscritto: 18/06/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 11:22
Giovedì, 11/08/2011
Intendi che se apri l'eseguibile con un editor di testo si leggono alcune scritte?

Se si basterà aprire il file in binario, criptare con una chiave ogni carattere letto e riscrivere l'eseguibile.
L'unico problema è che una volta aperto (per eseguirlo) bisogna decriptarlo quindi i suddetti eseguibili li dovresti aprire con un apposito programma implementato da te che prima li decripta poi li apre e in eseguito li re-cripta...

Naturalmente i tempi si allungano un pochino...

PM