标题: 哪位大哥能把这个tea加密的C++代码转为VB的啊??
ttbs123
新手上路
Rank: 1



UID 6346
精华 0
积分 1
帖子 1
阅读权限 10
注册 2005-7-8
发表于 2005-7-8 01:07  资料  短消息  加为好友 
哪位大哥能把这个tea加密的C++代码转为VB的啊??

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的加密源码,这里有说明,请大家翻译为VB代码,并且解析一下里面代码。谢谢

我找了一些资料,但还是分析不来上面的代码:
QQ使用的加密算法来源于一种称为TEA(Tiny Encryption Algorithm)加密算法。它是在1994年由英国剑桥大学的David Wheeler和Roger Needham所发明的一种加密方法。大概来说,它是使用128bit密钥加密64bit数据产生64bit输出的一种算法。这种算法的可靠性是通过加密轮数而不是算法的复杂度来保证的。具体的算法可以参考:http://www.ftp.cl.cam.ac.uk/ftp/papers/djw-rmn/djw-rmn-tea.html。实现可以参考:http://abcn.net/crypto.htm



QQ使用16轮的加密(这是最低限,推荐应该是32轮)。



QQ在使用这个算法的时候,由于需要加密不定长的数据,所以使用了一些常规的填充办法和交织算法(也就是说,把前一组的加密结果和后一组的进行运算,产生新的结果)。



具体的填充算法是:原始字符串加上8个字节再加上填充字符数应该是8的倍数(至少填充2个字节)。填充后的字符串是这样组织的。第一个字节,为填充字符数减2 OR 上0xA8。后面是填充字节。然后是待加密的数据,最后是7个0。填充的字节一般是0xAD,但再0A1dD版本中,会使用随机的填充字符串。一般,我们会用解密后最后是否7个零来判断是否正确的解密。

顶部
[广告] [Folding@Home] NV/AMD 版 GPUv2 客户端均已发布,附简单教程!
user_lwl
新手上路
Rank: 1



UID 6638
精华 0
积分 1
帖子 1
阅读权限 10
注册 2005-8-10
发表于 2005-8-10 14:16  资料  短消息  加为好友  QQ
Tiam

办法是有的
不过用VB的不好
加我QQ:342666594

顶部
behaviorist
新手上路
Rank: 1



UID 13567
精华 0
积分 11
帖子 11
阅读权限 10
注册 2007-6-13
发表于 2007-6-14 06:05  资料  短消息  加为好友 
k, 不是差不多么,
^ 改成 XOR,
expr1 op= expr2 展开成 expr1 = expr1 op expr2,
obj[expr] 转成 obj(expr)
lshift 和 rshift 自己实现一下
语法上再调整调整就好

顶部
 



当前时区 GMT+8, 现在时间是 2008-7-24 18:55
沪ICP备05042587号

本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.5.0 © 2001-2007 Comsenz Inc.
清除 Cookies - 联系我们 - 中国分布式计算总站 - Archiver - WAP