集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1093|回复: 1

TEA(Tiny Encryption Algorithm)

[复制链接]
小舍YZ 发表于 2017-7-24 14:24:10 | 显示全部楼层 |阅读模式
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[0], z=v[1], sum=0, i;         /* set up */
3     unsigned long delta=0x9e3779b9;                 /* a key schedule constant */
4     unsigned long a=k[0], b=k[1], c=k[2], d=k[3];   /* 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[0]=y;
11     v[1]=z;
12 }
13
14 void decrypt(unsigned long *v, unsigned long *k) {
15     unsigned long y=v[0], z=v[1], sum=0xC6EF3720, i; /* set up */
16     unsigned long delta=0x9e3779b9;                  /* a key schedule constant */
17     unsigned long a=k[0], b=k[1], c=k[2], d=k[3];    /* 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[0]=y;
24     v[1]=z;
25 }

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
zxopenljx 发表于 2023-2-10 08:57:01 | 显示全部楼层
TEA(Tiny Encryption Algorithm)
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 09:23 , Processed in 0.059260 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表