Why are you trying to address values outside the lower bound of the input array?
Here
for (unsigned int i = 0; i < sizeof(test); ++i)
{
test1[i] ^= test[i - 1] ^ cheimagice[i % 9];
}
and here
for (unsigned int i = 0; i < sizeof(test1); ++i)
{
test2[i] ^= test1[i - 1] ^ cheimagice[i % 9];
}
What should have been the scope? This should have also triggered a memory violation exception. Moreover Xoring contents of destination doesn't help to get the result.
[EDIT] I fixed the code:
unsigned char cheimagice[] = { 0xCF, 0x10, 0x4E, 0x3A, 0xC2, 0xD8, 0x5F, 0xAD, 0xE4 };
unsigned char test[] = { 0xC3, 0x18, 0xC7, 0xBE, 0x08, 0x1B, 0x25, 0xFF, 0x81, 0x55, 0xE0, 0xB5 };
printf("[Criptare]: \n");
printf("[INAINTE]: 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX \n", (unsigned char)test[0], (unsigned char)test[1], (unsigned char)test[2], (unsigned char)test[3], (unsigned char)test[4], (unsigned char)test[5], (unsigned char)test[6], (unsigned char)test[7], (unsigned char)test[8], (unsigned char)test[9], (unsigned char)test[10], (unsigned char)test[11]);
unsigned char *test1 = new unsigned char[sizeof(test)];
unsigned char *test2 = new unsigned char[sizeof(test)];
for (unsigned int i = 0; i < sizeof(test); ++i)
{
test1[i] = test[i] ^ cheimagice[i % 9];
}
printf("[DUPA]: 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX \n", (unsigned char)test1[0], (unsigned char)test1[1], (unsigned char)test1[2], (unsigned char)test1[3], (unsigned char)test1[4], (unsigned char)test1[5], (unsigned char)test1[6], (unsigned char)test1[7], (unsigned char)test1[8], (unsigned char)test1[9], (unsigned char)test1[10], (unsigned char)test1[11]);
printf("[Decriptare]: \n");
printf("[INAINTE]: 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX \n", (unsigned char)test1[0], (unsigned char)test1[1], (unsigned char)test1[2], (unsigned char)test1[3], (unsigned char)test1[4], (unsigned char)test1[5], (unsigned char)test1[6], (unsigned char)test1[7], (unsigned char)test1[8], (unsigned char)test1[9], (unsigned char)test1[10], (unsigned char)test1[11]);
for (unsigned int i = 0; i < sizeof(test1); ++i)
{
test2[i] = test1[i] ^ cheimagice[i % 9];
}
printf("[DUPA]: 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX 0x%02hX \n", (unsigned char)test2[0], (unsigned char)test2[1], (unsigned char)test2[2], (unsigned char)test2[3], (unsigned char)test2[4], (unsigned char)test2[5], (unsigned char)test2[6], (unsigned char)test2[7], (unsigned char)test2[8], (unsigned char)test2[9], (unsigned char)test2[10], (unsigned char)test2[11]);