谁能帮小弟我写出对应的加密函数

哪位高手能帮我写出对应的加密函数
解密函数如下:
const   unsigned   char   key[4]={0x11,0x04,0x03,0x07};
void   DataDecrypt(unsigned   char   *in,int   len,unsigned   char   *out)
{
int   i;
unsigned   char   r[3];
r[0]=key[0];r[1]=key[0];r[2]=key[1];
for(i=0;i <len;i++)
{
out[i]=in[i]^(r[2]^key[3]^r[1]^key[1]);
r[2]=r[2]^key[3]^r[1];
r[1]=r[2]^key[2]^r[0];
r[0]=in[i]^key[2];
}
}


------解决方案--------------------
异或算法的特征是:
如果 A = B ^ C,那么 B = A ^ C,因此
如果 out[i]=in[i]^(r[2]^key[3]^r[1]^key[1]);,那么
in[i]=out[i]^(r[2]^key[3]^r[1]^key[1]);

还发现只有r[0]与数据相关,问题就不难了!!

正在想....

------解决方案--------------------
试试看:
const unsigned char key[4]={0x11,0x04,0x03,0x07};
void DataEncrypt(unsigned char *in, int len, unsigned char *out)
{
int i ;
unsigned char r[3] ;

r[0] = key[0] ; r[1] = key[0] ; r[2] = key[1] ;

for ( i = 0 ; i < len ; i ++ ) {
out[i] = in[i]^(r[2]^key[3]^r[1]^key[1]) ;
r[2] = r[2]^key[3]^r[1] ;
r[1] = r[2]^key[2]^r[0] ;
r[0] = out[i] ^ key[2] ;
}
}
如果不行我也无能为力了!