ST17H26 tea加密解密代码

void encrypt(unsigned long *v, unsigned long *k) 
{
unsigned long y=v[0], z=v[1], sum=0, i;         /* set up */
unsigned 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 */
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 up */
unsigned 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;

}



void Encrypt(volatile unsigned char *InText, volatile unsigned char *inkey, volatile unsigned char *OutText)
{
unsigned char i;
encrypt((unsigned long *)(InText+0), (unsigned long *)inkey);
encrypt((unsigned long *)(InText+8), (unsigned long *)inkey);
for(i=0; i<16; i++)
{
OutText[i] = InText[i];
}
}








void Decrypt(volatile unsigned char *InText, volatile unsigned char *inkey,  volatile unsigned char *OutText)
{
unsigned char i;
decrypt((unsigned long *)(InText+0), (unsigned long *)inkey);
decrypt((unsigned long *)(InText+8), (unsigned long *)inkey);
for(i=0; i<16; i++)
{
OutText[i] = InText[i];
}
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值