class XOR{
protected:
char key[256];
public:
XOR(){
key="fjsldjf84937fd7f6s876df52396tegulhghs87f53f8w987r8970w987erSDFJDFLJSGHHEIHWOHGKDFGSLGDKHSLKDGH";
}
char* xorStr(char *string){
const static int len = strlen(string);
char* temp = new char(len);
for(int i = 0; i < len+1;i++)
temp[i] = string[i]^key[i];
return temp;
}
};
XOR* xor = new XOR();
char* x=xor->xorStr("lol");
char* orig=xor->xorStr(x);

#ifndef _XOR_H
#define _XOR_H
template <int XORSTART, int BUFLEN, int XREFKILLER>
class XorStr
{
private:
XorStr();
public:
char s[ BUFLEN ];
XorStr( const char * xs );
~XorStr()
{
for ( int i = 0; i < BUFLEN; i++ ) s[ i ]=0;
}
};
template <int XORSTART, int BUFLEN, int XREFKILLER>
XorStr<XORSTART,BUFLEN,XREFKILLER>::XorStr( const char * xs )
{
int xvalue = XORSTART;
int i = 0;
for ( ; i < ( BUFLEN - 1 ); i++ )
{
s[ i ] = xs[ i - XREFKILLER ] ^ xvalue;
xvalue += 1;
xvalue %= 256;
}
s[ BUFLEN - 1 ] = 0;
}
#endif
