QQ是我们生活中常用到的一种即时社交工具,那么今天我们就来了解一种在QQ的数据传输协议中使用的对称加密算法——TEA加密算法。

TEA加密算法

TEA加密算法是一种分组密码算法,全称为"Tiny Encryption Algorithm" ,特点就是速度快,代码量小,但却拥有很强的抗差分分析能力,对 64 位数据加密的密钥长达 128 位,安全性相当好。

TEA加密算法

TEA加密算法的原理

TEA加密和解密时都使用一个常量值,这个常量值为0x9e3779b,这个值是近似黄金分割率。然后利用不断增加的Delta(黄金分割率)值作为变化,使得每轮的加密是不同,该加密算法的迭代次数可以改变,建议的迭代次数为32轮。

TEA算法每一次可以操作64bit(8byte),采用128bit(16byte)作为key,算法采用迭代的形式,推荐的迭代轮数是64轮,最少32轮。

TEA加密算法

TEA加密算法的演变

由于针对TEA加密算法的攻击不断出现,TEA也出现了很多版本的升级版。

  • XTEA

相比于TEA,XTEA算法的安全性显然是更高的,其中的过程要比TEA稍微复杂一点点,增加了更多的密钥表,移位和异或操作等。

TEA加密算法

  • Block TEA

Block TEA算法可以对32位的任意整数倍长度的变量块进行加解密的操作,该算法将XTEA轮循函数依次应用于块中的每个字,并且将它附加于被应用字的邻字。

  • XXTEA

XXTEA使用跟Block TEA相似的结构,但在处理块中每个字时利用了相邻字,且用拥有两个输入量的MX函数代替了XTEA轮循函数。

TEA加密算法的优点

TEA采用与DES算法类似的Feistel结构,迭代的每次循环使用加法和移位操作,对明文和密钥进行扩散和混乱,实现明文的非线性变换。

TEA密钥长度和迭代次数都是DES的两倍,抗“试错法”攻击的强度不低于DES算法。算法以32bits的字为运算单位,而不是耗费计算能力的逐位运算。但并没有采用像DES那样的转换矩阵,所以TEA算法安全、高效、占用存储空间少,非常适合在嵌入式系统中应用。

免责声明:素材源于网络,如有侵权,请联系删稿。