首页
社区
课程
招聘
[求助]tea算法的问题
发表于: 2010-1-30 14:03 7362

[求助]tea算法的问题

2010-1-30 14:03
7362
麻烦大家帮忙解释一下有些不懂的地方

#define TEA_ROUNDS 0x20 定义循环32轮
#define TEA_DELTA 0x9E3779B9 下面这两个变量做什么啊
#define TEA_SUM 0xE3779B90

void tiny_encrypt(unsigned long *const v, unsigned long *const w,
const unsigned long *const k)
{
register unsigned long
y = v[0],
z = v[1],
a = k[0],
b = k[1],
c = k[2],
d = k[3],  这些赋值看不懂,为什么把这些数组赋值给a b c……
n = TEA_ROUNDS,
sum = 0,
delta = TEA_DELTA;

while (n-- > 0) {
sum += delta;
y += (z << 4) + a ^ z + sum ^ (z >> 5) + b;
z += (y << 4) + c ^ y + sum ^ (y >> 5) + d;
}  循环32轮,这里面做什么啊
w[0] = y;
w[1] = z;
}

还有一个版本,和上面那个大同小异

void EncMusic(PDWORD pData, PDWORD pEncData)
{
  DWORD  Key1=  0x45AD9059;
  
  DWORD  FKey1= 0xF03E934F;
  DWORD  FKey2= 0x27BDB886;
  DWORD  LKey1= 0xD0AAE945;
  DWORD  LKey2= 0x993BA3AE;
  DWORD FirstData,LastData,Count,Key;  
  
  Count=32;
  Key=0;
  FirstData = *pData;
  LastData = *(pData+1);
  
  do
  {  
    Key= Key+Key1;
    FirstData=FirstData+ ((FKey2+(LastData<<4)) ^ (FKey1+ (LastData>>5)) ^ (Key+LastData));
    LastData=LastData+((LKey2 +(FirstData<<4)) ^ (LKey1+ (FirstData>>5)) ^ (Key+FirstData));
    Count--;
  }while(Count!=0);
  *pEncData = FirstData;
  *(pEncData+1) = LastData;
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 360
活跃值: (77)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
2
那个数值是一个黄金分割 , 具体的tea算法, 推荐参考一个tea的数学公式, 程序已经说的很明白了, 建议参考一下公式
2010-1-30 14:13
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
TEA_DELTA  = (sqrt(5) - 1)/2 * 2^32

(sqrt(5) - 1)/2是黄金分割点的值.

这就是你说的数学公式吗,那y z a b c 这些变量是做什么的啊
2010-1-30 14:29
0
雪    币: 424
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
4
那些是临时变量,如果每次运算都用数组去寻址的话会影响效率
2010-1-30 18:16
0
雪    币: 11
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
y z a b c 这些变量 是寄存器类型的,初始值是多少?? 0吗

y = v[0], 这种定义方式我没见过,不知道谁懂,讲一下
2010-1-30 19:51
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
6
請見 TEA加密算法的C/C++实现

或是 http://www.cublog.cn/u/25096/showart_377372.html,有TEA的汇编代码。

其它就不列出。
請贾宝玉大大多花點時間在網路上找找。
祝 好運~
2010-1-30 20:31
0
雪    币: 102
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
楼上的很经典回答了。
2010-1-30 22:34
0
游客
登录 | 注册 方可回帖
返回
//