Im Encrypting the Original Messages using XOR algorithm by following code in C program. And Finally it gives another different value that message has encrypted. It should return same length even after the message has encrypted. 

But, Using **strlen(encrypted)** it gives less value than original message length. I couldn't recognize why the length of XOR encrypted message is showing less than the original message length. Please find the following the code to solve my problem. 

Thanks in Advance! 

```
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

char* XORCipher(char* data, char* key, int dataLen, int keyLen) {
    char* output = (char*)malloc(sizeof(char)*dataLen);

    for(int i = 0; i < dataLen; ++i) {
      output[i] = data[i] ^ key[i % keyLen];
    }

    return output;
}

int main(){

char *msg = "This is a Message from Boss";
char *key = "nandha";

int dataLen = strlen(msg);
int keyLen = strlen(key);

char *encrypt = XORCipher(msg,key,dataLen,keyLen);
printf("\nEncrypted msg is :\n %s",(char*)encrypt);

//The Length of encrypted char size is showing wrongly.
printf("size of Encrypted msg is: %d\n",strlen(encrypt));

encrypt = XORCipher(encrypt,key,strlen(encrypt),keyLen);
printf("\nOriginal msg converted is : %s\n",encrypt);

return 0;

}

```