Hello, i really need help on this. I fully cannot understand what i am doing wrong here. This is a segment of my project that uses dynamic arrays but i seem to be getting random memory related crashes that i cannot seem to fix.
These are my encode/decode classes.
They work by XORing every char past the 3nd position by the diffrence between the 1st position XOR 4 and the 2nd postion XOR 6.
My encode class works perfectly, its just my decode class, whenever the array for it to decode is more than 8 numbers it crashes, when it is less it works.
I really cant work this out.. where am i going wrong?
(The code is abit messy through frustration of debugging)
#include <windows.h>
#include <iostream.h>
using namespace std;
int debug = 1;
char * Dec(int * Data, int stringlen){
char * DecData = new char (stringlen+1);
cout << "Dec---------------------------\n";
int a = (Data[0] ^ 4) ^ 45;
int b = (Data[1] ^ 6) ^ 17;
int RecXor = b - a;
cout << "XorKey = " << RecXor << endl;
DecData[0] = Data[0] ^ 4;
DecData[1] = Data[1] ^ 6;
cout << "0 " << (char)DecData[0] << endl;
cout << "1 " << (char)DecData[1] << endl;
for(int i = 2;i < stringlen; i++){
if(debug)
cout << i << " " << (char)(Data[i] ^ RecXor) << endl;
DecData[i] = Data[i] ^ RecXor;
cout << stringlen-i << endl;
}
delete [] Data;
DecData[stringlen] = '\0';
cout << DecData << endl;
return DecData;
}
int * Enc(char * Data){
cout << "Enc---------------------------\n";
if(strlen(Data) < 3){
if(debug)
cout << "Data is too short to encode\n";
return 0;
}
int * NewData = new int (strlen(Data));
NewData[0] = Data[0] ^ 4;
NewData[1] = Data[1] ^ 6;
int XorKey = (Data[1] ^ 17) - (Data[0] ^ 45);
cout << "XorKey = " << XorKey << endl;
cout << "0 " << NewData[0] << endl;
cout << "1 " << NewData[1] << endl;
for(int i = 2; i < strlen(Data);i++){
NewData[i] = (Data[i] ^ XorKey);
if(debug)
cout << i << " " << NewData[i] << endl;
}
delete [] Data;
return NewData;
}
int main(){
int * encode = Enc("AAAAAAAA");
char * decode = Dec(encode, 8);
system("pause");
return 0;
}
Thanks in advance for any help