Aiuto creazione file

di il
9 risposte

Aiuto creazione file

Salve a tutti, essendo poco esperto di C++ avrei un piccolo problemino di tipo concettuale sulla creazione di un tipo di file.
In sostanza, in volevo sapere se è possibile creare un file che in teoria è l'unione di due file diversi.

Mi spiego meglio,in teoria ho 2 file: uno "file.tar.gpg" che è praticamente la firma digale di file.tar
e un file di testo keyid.txt di solo 8 caratteri che contiene il key id della chiave con cui ho firmato file.tar.

Il prof mi ha detto che devo creare un unico file dove all'interno di esso oltre alla firma ci deve essere pure la stringa del keyid, e per far in modo che le cose non si mischino devo inserire la stringa FFFFFFF come delimitatore tra keyid e firma.

Ma questa cosa si può fare e se si come?????

9 Risposte

  • Re: Aiuto creazione file

    Te lo mostro per passi.
    1. Apri un nuovo file e dichiara il modo di apertura binario
    2. apri il file con il key in binario
    3. leggi tutto il file
    4. scrivi il contenuto nel file del passo 1
    5. scrivi il deliminatore di campo
    6. apri la firma in binario
    7. leggi contenuto
    8. scrivi il tutto nel file del passo 1

    Non ti dimenticare di chiudere i file una volta finito il lavoro con loro.
  • Re: Aiuto creazione file

    Allora io sono riuscito a creare il file con insieme KeyID e file.tar.gpg a questo punto mi serve far il procedimento inverso cioe estrarre il keyid e ricreare il file.tar.gpg.
    ho estratto il key id e ho scritto su un nuovo file binario tutta la parte rimanente, ma il gpg non lo accetta....il codice sorgente binario del file.tar.gpg non è stato modificato, cos'è che non và???
  • Re: Aiuto creazione file

    E il deliminatore di campo l'hai tolto prima di inserire la parte rimanente in un altro file?
  • Re: Aiuto creazione file

    Non l'ho messo perchè non serviva alla fine........ho fatto anche questa prova,io leggo in binario solo il file.tar.gpg e lo scirvo su un nuovo file binario se aggiungere nulla. poi se utilizzo il nuovo file binario nel software di verifica delle firme mi da errore, se utilizzo file.tar.gpg no. Cosa sbaglio???

  • Re: Aiuto creazione file

    Codice?
  • Re: Aiuto creazione file

    Il mio codice che legge, crea il nuovo file e scrive è questo
    
    char *file = new char[100];
      string s;
      cout << "Inserire il path file da firmare firma: " ;
      cin >> file;
      cout << endl;
      
      
    string buff_file;
    string testo;
    
    testo = file;
    
    fstream filestream;
    
    filestream.open(testo.c_str(),fstream::in | fstream::binary); //LEGGE IL FILE IN BINARIO
    getline (filestream, buff_file);
    
    filestream.close();
    cout<<buff_file<<endl;
    
    string percorso_file;
    
    percorso_file = "/root/nuovo_file.tar.gpg";
    
    filestream.open(percorso_file.c_str(),fstream::out | fstream::binary); // CREA FILE IN BINARIO
    
    
    
    filestream.write(buff_file.c_str(), buff_file.size());//SCRIVE SU FILE BINARIO IL CONTENUTO DI BUFF_FILE
    
    filestream.close();
    non far caso all'impostazione, sono un pò scarso di c++
  • Re: Aiuto creazione file

    http://www.cplusplus.com/reference/string/getline

    il getline legge finche non c'è un '\n'. E' lì il tuo errore.

    usa questa pagina per ricavare il codice "GIUSTO" per te.

    http://www.cplusplus.com/reference/iostream/istream/tellg/

    Come vedi viene utilizzata la funzione read e non getline.
  • Re: Aiuto creazione file

    Usa questo codice e prova.
    
    // read a file into memory
    #include <iostream>
    #include <fstream>
    using namespace std;
    
    int main () {
      int length;
      char * buffer;
    
      ifstream is;
      is.open ("test.txt", ios::binary );
    
      // get length of file:
      is.seekg (0, ios::end);
      length = is.tellg();
      is.seekg (0, ios::beg);
    
      // allocate memory:
      buffer = new char [length];
    
      // read data as a block:
      is.read (buffer,length);
    
      is.close();
    
    
      ofstream os("out.gpg",ios::binary);
      os.write (buffer,length);
      os.close();
    
      delete [] buffer;
    
      return 0;
    }
    
  • Re: Aiuto creazione file

    Siiiiiiiiiiiiiiiii......funziona grazie mille.........
Devi accedere o registrarti per scrivere nel forum
9 risposte