Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <fstream>
- #include <vector>
- #include <thread>
- using namespace std;
- void pisi(int br_blokova, int offset, fstream& file, fstream& out_file, fstream& key_file)
- {
- char* buffer = new char[256];
- char* kljuc_za_xor = new char[256];
- char* rez = new char[256];
- 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);
- fstream out_file; //otvaranje fajla u kom ce biti smesten rezultat
- out_file.open(izlazni, 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;
- }
- br_koraka = file.tellg()/(br_niti*256);
- for(int i = 0; i < br_niti; i++){
- niti.push_back(thread(pisi,br_koraka,br_koraka*i*256, file, key_file, out_file));
- }
- for(auto it = niti.begin(); it != niti.end(); it++){
- it->join();
- }
- }
- 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;
- vector<unsigned char> vektor_obrade; //koristices kasnije, prvo raditi sa char, lakse je
- 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