简介
TEA是一种简单高效的加解密算法,以速度快,实现简单著称。TEA算法每一次可以操作64-bit数据,采用128-bit作为key,算法采用迭代的形式,推荐的迭代轮数是64,最少32。
代码(默认32轮)
void encrypt(unsigned long *v, unsigned long *k) {
unsigned long y=v[0], z=v[1], sum=0, i; //set upunsigned long delta=0x9e3779b9; // a key schedule constant
unsigned long a=k[0], b=k[1], c=k[2], d=k[3]; // cache keyfor (i=0; i < 32; i++) { // basic cycle start
sum += delta;
y += ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
z += ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d); // end cycle
}v[0]=y;
v[1]=z;
}void decrypt(unsigned long *v, unsigned long *k) {
unsigned long y=v[0], z=v[1], sum=0xC6EF3720, i; // set upunsigned long delta=0x9e3779b9; // a key schedule constant
unsigned long a=k[0], b=k[1], c=k[2], d=k[3]; // cache key
for(i=0; i<32; i++) { // basic cycle start
z -= ((y<<4) + c) ^ (y + sum) ^ ((y>>5) + d);
y -= ((z<<4) + a) ^ (z + sum) ^ ((z>>5) + b);
sum -= delta; // end cycle
}
v[0]=y;
v[1]=z;
}