-
-
[求助]tea算法的问题
-
2010-1-30 14:03
6959
-
麻烦大家帮忙解释一下有些不懂的地方
#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;
}
[培训]《安卓高级研修班(网课)》月薪三万计划,掌
握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法