// file XOR test 2 
#include <iostream>
#include <string>
#include <fstream>
#include <boost/filesystem.hpp>
void XOR(const std::string& filePath, const std::string& outputPath, const std::string& key)
{
    std::ifstream fin(filePath, std::ios::binary);
    std::istreambuf_iterator<char> beg(fin), end;

    std::ofstream fout(outputPath, std::ios::binary);
    std::ostreambuf_iterator<char> out(fout);

    std::string::const_iterator keyChr = key.begin();

    while(beg != end)
    {
        *out++ = *beg++ ^ *keyChr;

        if(++keyChr == key.end())
            keyChr = key.begin();
    }
}
int main()
{
    XOR("test.bin", "test.out", std::string(32, '*'));
    std::cout << "File size: " << boost::filesystem::file_size("test.bin") << '\n';
}
