void tean(word32 *k, word32 *v, long N) {
  word32 y=v[0], z=v[1];
  word32 limit,sum=0;
  if(N>0) { /* ENCRYPT */
    limit=DELTA*N;
    while(sum!=limit) {
      y+=((z<<4)^(z>>5)) + (z^sum) + k[sum&3];
      sum+=DELTA;
      z+=((y<<4)^(y>>5)) + (y^sum) + k[(sum>>11)&3];
    }
  } else { /* DECRYPT */
    sum=DELTA*(-N);
    while(sum) {
      z-=((y<<4)^(y>>5)) + (y^sum) + k[(sum>>11)&3];
      sum-=DELTA;
      y-=((z<<4)^(z>>5)) + (z^sum) + k[sum&3];
    }
  }
  v[0]=y; v[1]=z;
}void cl_enc_block(word32 *k, word32 *v) {
 tean(k,v,ROUNDS);
}void cl_dec_block(word32 *k, word32 *v) {
 tean(k,v,-ROUNDS);
}这个是我下的 加密的源代码
大家帮我看下这几个函数参数的意思 谢谢啦哪个是密钥 ,哪个是要加密的数据  哪个是加密后输出的数据啊

解决方案 »

  1.   

    void code(long* v, long* k)
    {
    unsigned long y=v[0],z=v[1],sum=0,             /* set up */
                  delta=0x9e3779b9, n=32 ;         /* key schedule constant*/while (n-->0)
    {                                              /* basic cycle start*/
      sum += delta ;
      y += (z<<4)+k[0] ^ z+sum ^ (z>>5)+k[1] ;
      z += (y<<4)+k[2] ^ y+sum ^ (y>>5)+k[3] ;     /* end cycle */
    }
    v[0]=y ;
    v[1]=z ;
    }
    这个就是TEA加密的源代码,那位高人 把那2个参数给我解释下啊 谢谢啦
    (还有应该可以加密任意长度的数据吧,。)
      

  2.   

    显然,你只要调用void cl_enc_block编码加密或者cl_dec_block解码。参数分别是传入、传出字符串的地址。