📄 tea.c
字号:
//Written by HappyTown [2006-10-10]
//Encrypt
TEA_Encrypt(unsigned char *out, unsigned char *data, unsigned char *key)
{
int i,j;
unsigned int y=0,z=0,a,b,c,d;
unsigned int sum = 0;
unsigned delta = 0x9E3779B9;
unsigned int k[4] = {0}; //4 part Keys
//set 4 part Keys
for (i=0; i<4; i++)
{
for(j=3; j>-1; j--)
{
k[i] |= key[i*4+j];
if (j!=0)
{
k[i] <<= 8;
}
}
}
//set y
for (i=3; i>-1; i--)
{
y |= data[i];
if (i!=0)
{
y <<= 8;
}
}
//set z
for (i=3; i>-1; i--)
{
z |= data[i+4];
if (i!=0)
{
z <<= 8;
}
}
//initial a,b,c,d
a = k[0]; b =k[1]; c = k[2]; d = k[3];
//encrypt
for(i=0; i<32; i++)
{
sum += delta;
y +=(z<<4) + a^z + sum^(z>>5) + b;
z +=(y<<4) + c^y + sum^(y>>5) + d;
}
//output y
for (i=0; i<4; i++)
{
out[i] = (y >> (8*i)) & 0xFF;
}
//output z
for (i=0; i<4; i++)
{
out[i+4] = (z >> (8*i)) & 0xFF;
}
}
//Decrypt
TEA_Decrypt(unsigned char *out, unsigned char *data, unsigned char *key)
{
int i,j;
unsigned int y=0,z=0,a,b,c,d;
unsigned int sum = 0xC6EF3720;
unsigned delta = 0x9E3779B9;
unsigned int k[4] = {0}; //4 part Keys
//set 4 part Keys
for (i=0; i<4; i++)
{
for(j=3; j>-1; j--)
{
k[i] |= key[i*4+j];
if (j!=0)
{
k[i] <<= 8;
}
}
}
//set y
for (i=3; i>-1; i--)
{
y |= data[i];
if (i!=0)
{
y <<= 8;
}
}
//set z
for (i=3; i>-1; i--)
{
z |= data[i+4];
if (i!=0)
{
z <<= 8;
}
}
//initial a,b,c,d
a = k[0]; b =k[1]; c = k[2]; d = k[3];
//Decrypt
for(i=0; i<32; i++)
{
z -= (y<<4) + c^y + sum^(y>>5) + d;
y -= (z<<4) + a^z + sum^(z>>5) + b;
sum -= delta;
}
//output y
for (i=0; i<4; i++)
{
out[i] = (y >> (8*i)) & 0xFF;
}
//output z
for (i=0; i<4; i++)
{
out[i+4] = (z >> (8*i)) & 0xFF;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -