Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <thread>
- #include <string>
- using namespace std;
- void pisi(int br_blokova, int offset,char* ulazniFajl, char* izlazni, char* kljuc)
- {
- char* buffer = new char[256];
- char* kljuc_za_xor = new char[256];
- char* rez = new char[256];
- ifstream file; //otvaranje fajla koji se obradjuje
- file.open(ulazniFajl, ios::binary | ios::in);
- file.seekg(offset);
- fstream out_file;
- string this_output_filename(izlazni);
- this_output_filename += std::to_string(offset);
- cout << "trenutni offset: " << offset << endl; //otvaranje fajla u kom ce biti smesten rezultat
- out_file.open(this_output_filename, ios::binary|ios::out);
- ifstream key_file; //otvaranje fajla u kom je kljuc za obradu prvog fajla
- key_file.open(kljuc, ios::binary|ios::in);
- if(!file.is_open() || !out_file.is_open() || !key_file.is_open())
- {
- cout<<"Greska pri otvaranju nekog od fajlova."<<endl;
- }
- for(int i = 0; i < br_blokova && !file.eof(); i++)
- {
- file.read(buffer,256);
- key_file.read(kljuc_za_xor, 256);
- for(int i = 0; i <= 255; i++)
- {
- rez[i] = buffer[i] ^ kljuc_za_xor[i];
- // rez[i] = buffer[i] + 1;
- }
- out_file.write(rez, 256);
- }
- }
- void napravi_fajl(char* ulazniFajl, char* izlazni, char* kljuc, int br_niti){
- int br_koraka;
- vector<thread> niti;
- ifstream file; //otvaranje fajla koji se obradjuje
- file.open(ulazniFajl, ios::binary | ios::in | ios::ate);
- int velicina_fajla = file.tellg();
- cout << "velicina fajla: " << velicina_fajla << endl;
- br_koraka = file.tellg()/(br_niti*256);
- file.close();
- for(int i = 0; i < br_niti; i++){
- cout << "kreiram nit: " << i << endl;
- niti.push_back(thread(pisi,br_koraka,br_koraka*i*256,ulazniFajl, izlazni, kljuc));
- }
- for(auto it = niti.begin(); it != niti.end(); it++){
- it->join();
- }
- }
- vector<unsigned char> vektor_obrade;
- int main(int argc, char* argv[])
- {
- char* ulazniFajl = argv[1];
- char* kljuc = argv[2];
- char* izlazni = argv[3];
- int br_niti = atoi(argv[4]);
- vector<thread> niti;
- napravi_fajl(ulazniFajl, izlazni, kljuc,br_niti);
- // int br_koraka = velicina/br_niti;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement