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 }
TEA(Tiny Encryption Algorithm)
页:
[1]