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);
}这个是我下的 加密的源代码
大家帮我看下这几个函数参数的意思 谢谢啦哪个是密钥 ,哪个是要加密的数据 哪个是加密后输出的数据啊
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);
}这个是我下的 加密的源代码
大家帮我看下这几个函数参数的意思 谢谢啦哪个是密钥 ,哪个是要加密的数据 哪个是加密后输出的数据啊
解决方案 »
- 我是来散分的
- 为什么这样做法不能将一个变量传入参数里面
- 调用 connect函数出错,WSAGetLastError的返回值是 0
- vc里面怎么得到一个UUID字符串啊
- 新手请教两个及其简单的小问题!望答复!
- 请教一个设备操作的问题
- 控件编辑中出现的问题,请解答,谢谢!
- release版本和debug版本有何异同?
- 困惑我很久了,谁帮我解决以下,先给100分,还有还有
- SQL 有一个BCP命令可以实现数据库快速导入导出,如何在VC中实现,
- 急求socket客户端!
- 我有CPropertyPage,CPropertySheet做成的属性表,如何将属性表放在FormView中。再做不出来我就要被炒了,谢谢大哥们了
{
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个参数给我解释下啊 谢谢啦
(还有应该可以加密任意长度的数据吧,。)