#define XOR_EX_KEY  "\x33\x96\x8e\xfa\x24\xa9\xb1\x6a\x51\x03\x27\xc5\x52\x92\xe3\xf8\x19\x07\x3a\x92\x68"
void xor_buf_ex(
    unsigned char *pInBuffer,
    unsigned char *pOutBuffer,
    unsigned long cbBuffer,
    unsigned char *pKey,
    unsigned long lKeyLen,
    unsigned long offset
    )
{
    if (lKeyLen <= 0) return;    for (unsigned long i=0; i<cbBuffer; i++) {
        unsigned u = ((unsigned long)offset+i)%lKeyLen;
        *pOutBuffer = *pInBuffer ^ pKey[u];
        *pOutBuffer = *pOutBuffer ^ i;
        pInBuffer++;
        pOutBuffer++;
    }
}
这是C语言代码,你要转换成JAVA代码 base64解码后,用xor_buf_ex()进行解密就可以了:xor_buf_ex((unsigned char *)buf, 
(unsigned char *)buf, nConfigLen, (unsigned char *)XOR_EX_KEY, strlen(XOR_EX_KEY), 0); "abcdabcd"
"ABCDEFGHIJK "
 012345678910"xxxxxxxxxxxx"按字节做“异或”操作

解决方案 »

  1.   

    #define XOR_EX_KEY  "\x33\x96\x8e\xfa\x24\xa9\xb1\x6a\x51\x03\x27\xc5\x52\x92\xe3\xf8\x19\x07\x3a\x92\x68"
    void xor_buf_ex(
        unsigned char *pInBuffer,
        unsigned char *pOutBuffer,
        unsigned long cbBuffer,
        unsigned char *pKey,
        unsigned long lKeyLen,
        unsigned long offset
        )
    {
        if (lKeyLen <= 0) return;    for (unsigned long i=0; i<cbBuffer; i++) {
            unsigned u = ((unsigned long)offset+i)%lKeyLen;
            *pOutBuffer = *pInBuffer ^ pKey[u];
            *pOutBuffer = *pOutBuffer ^ i;
            pInBuffer++;
            pOutBuffer++;
        }
    }
    这是C语言代码,你要转换成JAVA代码 base64解码后,用xor_buf_ex()进行解密就可以了:xor_buf_ex((unsigned char *)buf, 
    (unsigned char *)buf, nConfigLen, (unsigned char *)XOR_EX_KEY, strlen(XOR_EX_KEY), 0); "abcdabcd"
    "ABCDEFGHIJK "
     012345678910"xxxxxxxxxxxx"按字节做“异或”操作