技术科普资产监测技术中关于TEA解密算法
Posted 瑞奇Ricky
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了技术科普资产监测技术中关于TEA解密算法相关的知识,希望对你有一定的参考价值。
近期笔者在资产监测设备的开发过程中,涉及到数据资源的加密与解密算法问题,资产监测设备的主要作用是实时监测资产的位置、运动轨迹、温湿度环境等数据,帮助企业对运输过程中或存储中的资产进行监测,降低企业的资产损耗。
资产监测设备的主要特征之一是利用物联网技术,将设备与网络进行互联,帮助企业通过云端后台了解资产的具体情况。资产监测设备还能够通过运动传感器对运动过程中遇到的紧急状况进行第一事件报警,避免货物资产受到了碰撞,后期定责难的问题。在数据传输过程中需要对数据进行加密保护,同时在云端后台需要将数据进行解密,使得用户能够对相关信息进行查看。
TEA算法介绍
TEA采用与DES算法类似的Feistel结构,迭代的每次循环使用加法和移位操作,对明文和密钥进行扩散和混乱,实现明文的非线性变换。TEA密钥长度和迭代次数都是DES的两倍,抗“试错法”攻击的强度不低于DES算法。算法以32bits的字为运算单位,而不是耗费计算能力的逐位运算。算法没有采用DES那样的转换矩阵,它安全、高效、占用存储空间少,非常适合在嵌入式系统中应用, 据说QQ就是使用16轮迭代的TEA算法。
TEA加密,算法简单,容易实现,主要通过移位和异或实现数据的加密,对算力需求不高,很适合再嵌入式系统中使用。TEA算法利用不断增加的Delta(黄金分割率)值作为变化,使得每轮的加密是不同,该加密算法的迭代次数可以改变,建议的迭代次数为32轮。加密使用一组128bit的密钥进行加密,解密的时候同样需要密钥解密。
具体做法:
/*
*key maybe 128bit =16Bytes.
buf maybe BLOCK_SIZE
inbuf == outbuf == buf
/
void btea_decrpyt( unsigned char buf, unsigned int BLOCK_SIZE, unsigned char key )
{
unsigned char n=BLOCK_SIZE/4;
unsigned long *v=(unsigned long *)buf;
unsigned long *k=(unsigned long *)key;
unsigned long z = v[n - 1],y = v[0],sum = 0,e ;
unsigned char p,q ;
//Decoding Part…
q = S_LOOPTIME + 52 / n ;
sum = q * DELTA ;
while ( sum != 0 )
{
e = sum >> 2 & 3 ;
for ( p = n - 1 ; p > 0 ; p-- )
z = v[p - 1],
y = v[p] -= MX;
z = v[n - 1] ;
y = v[0] -= MX;
sum -= DELTA ;
}
}
在传输数据或资源过程中,利用TEA加密后,可使用以上方式进行解密。
以上是关于技术科普资产监测技术中关于TEA解密算法的主要内容,如果未能解决你的问题,请参考以下文章