小舍YZ 发表于 2017-7-24 14:24:10

TEA(Tiny Encryption Algorithm)

TEA(Tiny Encryption Algorithm)

TEA(Tiny Encryption Algorithm) 是一种简单高效的加密算法,以加密解密速度快,实现简单著称。算法真的很简单,TEA算法每一次可以操作64-bit(8-byte),采用128-bit(16-byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。

目前我只知道QQ一直用的是16轮TEA。先给出C语言的源代码(默认是32轮):

1 void encrypt(unsigned long *v, unsigned long *k) {
2   unsigned long y=v, z=v, sum=0, i;         /* set up */
3   unsigned long delta=0x9e3779b9;               /* a key schedule constant */
4   unsigned long a=k, b=k, c=k, d=k;   /* cache key */
5   for (i=0; i < 32; i++) {                        /* basic cycle start */
6         sum += delta;
7         y += ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
8         z += ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);/* end cycle */
9   }
10   v=y;
11   v=z;
12 }
13
14 void decrypt(unsigned long *v, unsigned long *k) {
15   unsigned long y=v, z=v, sum=0xC6EF3720, i; /* set up */
16   unsigned long delta=0x9e3779b9;                  /* a key schedule constant */
17   unsigned long a=k, b=k, c=k, d=k;    /* cache key */
18   for(i=0; i<32; i++) {                            /* basic cycle start */
19         z -= ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);
20         y -= ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
21         sum -= delta;                              /* end cycle */
22   }
23   v=y;
24   v=z;
25 }

zxopenljx 发表于 2023-2-10 08:57:01

TEA(Tiny Encryption Algorithm)
页: [1]
查看完整版本: TEA(Tiny Encryption Algorithm)