找回密码
 新注册用户
搜索
查看: 8160|回复: 2

哪位大哥能把这个tea加密的C++代码转为VB的啊??

[复制链接]
发表于 2005-7-8 01:07:05 | 显示全部楼层 |阅读模式
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个零来判断是否正确的解密。
回复

使用道具 举报

发表于 2005-8-10 14:16:58 | 显示全部楼层

Tiam

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

使用道具 举报

发表于 2007-6-14 06:05:08 | 显示全部楼层
k, 不是差不多么,
^ 改成 XOR,
expr1 op= expr2 展开成 expr1 = expr1 op expr2,
obj[expr] 转成 obj(expr)
lshift 和 rshift 自己实现一下
语法上再调整调整就好
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 新注册用户

本版积分规则

论坛官方淘宝店开业啦~

Archiver|手机版|小黑屋|中国分布式计算总站 ( 沪ICP备05042587号 )

GMT+8, 2024-4-29 17:01

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表