C++加密小程序遇到有关问题,求指教

C++加密小程序遇到问题,求指教
写了一个小程序,用来对字符串进行简单的加密,程序如下:

CString CommandEncrypt(CString strCode)
{
char cKey[] = "AssetCentre";
int ilen= strlen(cKey);

 LPCTSTR szSource = (LPCTSTR) strCode; 
  
    int iLength = strCode.GetLength(); 
    char *szDes = new char[iLength + 1];   
    for(int i = 0;i < iLength;i++) 
    { 
szDes[i] = szSource[i] ^cKey[i%ilen] ; 
    } 
  
    szDes[iLength] = '\0';
    CString strTemp(szDes); 
    delete[] szDes; 
delete[] cKey;
    return strTemp;   
}

void main()
{
    CString strTemp=_T("ABCDEFGHIJKLMN");
CString strTemp1=CommandEncrypt(strTemp);
strTemp=CommandEncrypt(strTemp1);
}


解密之后的字符串为空,求指教该怎么改进这个函数, 谢谢!
------解决思路----------------------
原因很简单,第一个字符加密时是A^A,结果就是0。再把一个以0开始的字符串赋给CString,CString遇到0就认为字符串结尾了,后面的加密后的字符串直接被忽略了。你可以看内存里面
C++加密小程序遇到有关问题,求指教
还有一点就是,你这个代码明显有问题CString是双字节的UNICODE 编码,GetLength返回的是UNICODE字符数,实际的内存大小为其2倍。
------解决思路----------------------
字符串默认\0结尾,那么你就不要用字符串呗,用byte数组来。