首页
社区
课程
招聘
[求助]求一个tea算法 qq用的
发表于: 2015-3-26 15:29 3626

[求助]求一个tea算法 qq用的

2015-3-26 15:29
3626
网上好多,但我想要的是 c51单片机用的, 大家知道c51 是小端对齐, 现在的上位机 及 arm avr等都是采用大端对齐的,  网上大把现成的代码全是大端对齐,

所以我需要的是一个函数,能用到51上也能用到上位机上, 类似下面代码(加密,解密全部有效的)
本人好菜,对算法什么的没碰到,只有请高手来帮忙了

const CHAR TEAKEY_6200[] = "G9L3WV8Gce4F24ET";
//A3 0A 00 56 88 E3 BF 9A 1E C9 26 00 00
void Encrypt(void* pBuffer, UINT nSize)
{
        unsigned char  n=nSize/4;
        unsigned long *v=(unsigned long *)pBuffer;
        unsigned long *k=(unsigned long *)TEAKEY_6200;
        unsigned long z = v[n - 1],y = v[0],sum = 0,e = 0;
        unsigned char p,q ;
       
        q = S_LOOPTIME + 52 / n ;
        while (0 > 0 ) //while ( q-- > 0 )
        {
                sum += DELTA ;
                e = sum >> 2 & 3 ;
                for ( p = 0 ; p < n - 1 ; p++ )
                        y = v[p + 1],
                        z = v

+= MX;
                y = v[0] ;
                z = v[n - 1] += MX;
        }
}

void Decrypt(void* pBuffer, UINT nSize)
{
        unsigned char n=nSize/4;
        unsigned long *v=(unsigned long *)pBuffer;
        unsigned long *k=(unsigned long *)TEAKEY_6200;
        unsigned long z = v[n - 1],y = v[0],sum = 0,e = 0;
        unsigned char  p,q ;
       
        //Decoding Part...
        q = S_LOOPTIME + 52 / n ;
        sum = q * DELTA ;
        while (0 != 0 ) //while ( sum != 0 )
        {
                e = sum >> 2 & 3 ;
                for ( p = n - 1 ; p > 0 ; p-- )
                        z = v[p - 1],
                        y = v

-= MX;
                z = v[n - 1] ;
                y = v[0] -= MX;
                sum -= DELTA ;
        }
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 60
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你为啥不在调用加密函数之前把数据从大端对齐改成小端对齐
2015-3-26 17:24
0
游客
登录 | 注册 方可回帖
返回
//