GG_32 (Normal User)
Newbie
Messaggi: 4
Iscritto: 03/03/2020
|
Buongiorno/Buonasera a tutti, il progetto che ho in mente è quello di riuscire a criptare il contenuto di un semplice file txt, come metodo di criptazione userò lo xor e ho già un algoritmo che genera la chiave, ho anche l'algoritmo che legge il contenuto del file. Il problema è: Come faccio a prendere in considerazione come password per accedere alla decriptazione una stringa messa in un file txt? Grazie a tutte le "anime misericordiose" che mi aiuteranno, in caso che non sono stato chiaro posso fornire ulteriori spiegazioni più dettagliate.
|
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
Non ho capito...
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti. |
|
GG_32 (Normal User)
Newbie
Messaggi: 4
Iscritto: 03/03/2020
|
Postato originariamente da AldoBaldo: Non ho capito...
|
Allora, grazie di aver risposto, io volevo che l'utente scrivesse la propria password su un file di testo e il mio programma, per il controllo della password che successivamente deve essere inserita prenda in considerazione la frase scritta nel file di testo...scusate se non sono molto chiaro : (
|
|
Mikelius (Member)
Expert
Messaggi: 525
Iscritto: 14/04/2017
|
Innanzitutto, vuoi procedere con C++ (ad oggetti) oppure c/c++ ?
Nel primo caso usa la libreria
Codice sorgente - presumibilmente C/C++ |
con
Codice sorgente - presumibilmente Plain Text |
OpenFile("path/file.txt");
OpenFile.get(ch);
OpenFile.close();
|
(Vai a cercarti come funzionano i metodi)
Nel 2° caso potresti usare
Codice sorgente - presumibilmente Plain Text |
fopen()
fscanf()
fclose()
|
Ed inserisci la password letta in una stringa/array di caratteri.
Questi sono solo due esempi, un buon libro di programmazione potrebbe dartene anche altri.
Solo ua domanda, se non sai leggere un file, perchè stai cercando di fare cose più complicate tipo il criptaggio del file? Il fatto che tu abbia una funzione che legge il file e lo cripti non è una scusa. Il criptaggi necessita di lettura e scrittura dei file. Le funzioni base le devi avere. Ultima modifica effettuata da Mikelius il 22/04/2020 alle 11:26 |
|
GG_32 (Normal User)
Newbie
Messaggi: 4
Iscritto: 03/03/2020
|
|
|
AldoBaldo (Member)
Guru
Messaggi: 699
Iscritto: 08/01/2015
|
Per caricare in memoria il contenuto di un file di testo in C io di solito faccio così:
Codice sorgente - presumibilmente C++ |
char *carica_file_txt( const char *nome_file ) { char *d = NULL; /* d: dati */ if( *nome_file ) { FILE *f = fopen( nome_file, "r" ); if( f ) { size_t i, dim; int c; for( dim=0; EOF!=(c=fgetc(f)); ++dim ); if( (d=calloc(dim+1,1)) ) { for( rewind(f), i=0; EOF!=(c=fgetc(f)); ++i ) d[i] = c; if( i!=dim ) { free( d ); d = NULL; } /* errore! */ } fclose( f ); } } return d; /* d e' NULL in caso di errore */ }
|
Il codice non è scritto nel modo più leggibile, perché una delle mie fissazioni è quella di ridurre al minimo la quantità delle righe. Lo so che è un difetto, ma pazienza: io mi ci trovo bene. Una versione più "verbosa" potrebbe essere questa, che fa esattamente la stessa cosa:
Codice sorgente - presumibilmente C# |
/*============================================================================== Apre in lettura il file di testo nome_file e ne legge carattere per carattere il contenuto, copiandolo in uno spazio di memoria dinamica appositamente allocato. Spetta al chiamante liberare la memoria allocata. Se tutto va a buon fine, restituisce il puntatore alla memoria allocata. In caso di errore, nessuna memoria risulta allocata e la funzione restituisce NULL. ==============================================================================*/ char *carica_file_txt( const char *nome_file ) { char *d = NULL; /* d: dati */ if( *nome_file ) { FILE *f = fopen( nome_file, "r" ); if( NULL != f ) { size_t i, dim; int c = fgetc( f ); for( dim=0; EOF!=c; ++dim ) { c = fgetc( f ); } d = calloc( dim+1, 1 ); if( NULL != d ) { rewind( f ); c = fgetc( f ); for( i=0; EOF!=c; ++i ) { d[i] = c; c = fgetc( f ); } if( i != dim ) { /* errore! */ free( d ); d = NULL; } } fclose( f ); } } return d; /* d e' NULL in caso di errore */ }
|
Se dovessi voler usare questa funzione in C++ dovresti scrivere d=(char*)calloc(dim+1,1); anziché d=calloc(dim+1,1);
Ah, dimenticavo: la funzione presuppone che il testo occupi un solo byte per carattere.
EDIT: devi includere stdlib.h e stdio.h . Ultima modifica effettuata da AldoBaldo il 22/04/2020 alle 22:37
ATTENZIONE! Sono un hobbista e l'affidabilità delle mie conoscenze informatiche è molto limitata. Non prendere come esempio il codice che scrivo, perché non ho alcuna formazione accademica e rischieresti di apprendere pratiche controproducenti. |
|