Advertisement
Guest User

Untitled

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