Advertisement
Guest User

bekap

a guest
Apr 5th, 2020
189
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.51 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3. #include <vector>
  4. #include <thread>
  5. #include <string>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. void pisi(int br_blokova, int offset,char* ulazniFajl, char* izlazni, char* kljuc)
  11. {
  12.  
  13.     char* buffer = new char[256];
  14.     char* kljuc_za_xor = new char[256];
  15.     char* rez = new char[256];
  16.  
  17.  
  18.     ifstream file;                                  //otvaranje fajla koji se obradjuje
  19.     file.open(ulazniFajl, ios::binary | ios::in);
  20.     file.seekg(offset);
  21.  
  22.     fstream out_file;
  23.     string this_output_filename(izlazni);
  24.     this_output_filename += std::to_string(offset);
  25.     cout << "trenutni offset: " << offset << endl;                             //otvaranje fajla u kom ce biti smesten rezultat
  26.     out_file.open(this_output_filename, ios::binary|ios::out);
  27.  
  28.     ifstream key_file;                              //otvaranje fajla u kom je kljuc za obradu prvog fajla
  29.     key_file.open(kljuc, ios::binary|ios::in);
  30.  
  31.     if(!file.is_open() || !out_file.is_open() || !key_file.is_open())
  32.     {
  33.  
  34.         cout<<"Greska pri otvaranju nekog od fajlova."<<endl;
  35.     }
  36.  
  37.  
  38.     for(int i = 0; i < br_blokova && !file.eof(); i++)
  39.     {
  40.         file.read(buffer,256);
  41.         key_file.read(kljuc_za_xor, 256);
  42.  
  43.  
  44.         for(int i = 0; i <= 255; i++)
  45.         {
  46.  
  47.             rez[i] = buffer[i] ^ kljuc_za_xor[i];
  48.             //    rez[i] = buffer[i] + 1;
  49.  
  50.         }
  51.  
  52.         out_file.write(rez, 256);
  53.  
  54.     }
  55.  
  56. }
  57.  
  58. void napravi_fajl(char* ulazniFajl, char* izlazni, char* kljuc, int br_niti){
  59.  
  60.     int br_koraka;
  61.     vector<thread> niti;
  62.  
  63.     ifstream file;                                  //otvaranje fajla koji se obradjuje
  64.     file.open(ulazniFajl, ios::binary | ios::in | ios::ate);
  65.  
  66.     int velicina_fajla = file.tellg();
  67.     cout << "velicina fajla: " << velicina_fajla << endl;
  68.     br_koraka = file.tellg()/(br_niti*256);
  69.  
  70.     file.close();
  71.      for(int i = 0; i < br_niti; i++){
  72.         cout << "kreiram nit: " << i << endl;
  73.         niti.push_back(thread(pisi,br_koraka,br_koraka*i*256,ulazniFajl, izlazni, kljuc));
  74.  
  75.     }
  76.  
  77.     for(auto it = niti.begin(); it != niti.end(); it++){
  78.  
  79.         it->join();
  80.  
  81.     }
  82.  
  83. }
  84.  
  85. vector<unsigned char> vektor_obrade;
  86.  
  87. int main(int argc, char* argv[])
  88. {
  89.     char* ulazniFajl = argv[1];
  90.     char* kljuc      = argv[2];
  91.     char* izlazni    = argv[3];
  92.     int br_niti      = atoi(argv[4]);
  93.  
  94.     vector<thread> niti;
  95.  
  96.     napravi_fajl(ulazniFajl, izlazni, kljuc,br_niti);
  97.  
  98.    // int br_koraka = velicina/br_niti;
  99.  
  100.     return 0;
  101. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement