在计算能力有限的嵌入式系统中实现加、解密算法,不但要求密文难以破解,还对计算速度、代码长度的要求苛刻。对称加密算法相对简单、实现容易、速度快。我们在“智能远程抄表系统”中,对传输数据采用了对称加密TEA算法保护,获得了理想的效果。

TEA算法介绍

TEA算法是由剑桥大学计算机实验室的DavidWheeler和RogerNeedham设计的,意为微型加密算法,其目的是设计一种可以用各种语言实现的,能在大多数机器上运行的可靠的加密算法。算法对64bits的明文数据块,用128bits密钥加密,得到64bits的密文数据块。

TEA采用与DES算法类似的Feistel结构,迭代的每次循环使用加法和移位操作,对明文和密钥进行扩散和混乱,实现明文的非线性变换。TEA密钥长度和迭代次数都是DES的两倍,抗“试错法”攻击的强度不低于DES算法。算法以32bits的字为运算单位,而不是耗费计算能力的逐位运算。算法没有采用DES那样的转换矩阵,它安全、高效、占用存储空间少,非常适合在嵌入式系统中应用。

下面给出TEA算法的C语言描述:
浅析TEA算法
浅析TEA算法
设计者认为算法中DELTA的值对算法并无什么影响,只是为了避免不良的取值,推荐DELTA的值取为黄金分割数(5√-2)/2与232的乘积,取整后的十六进制值为0x9e3779B9。TEA算法的迭代次数可以改变,明文或密钥的1bit信息扩散到32bits中最多需6次迭代,所以迭代16轮可能就够了,而算法设计者推荐的迭代次数为32轮。