单片机通信的加密和解密
Posted 流水灯
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单片机通信的加密和解密相关的知识,希望对你有一定的参考价值。
通信,有时候为了保证截获方即使得到了数据包,也不知道内容,所以加密传输即可;但有时候不需要知道数据包的内容,只要知道知道数据包能干嘛即可,比如发指令,此种情况单单对数据包进行加密就不够了。
基础知识:
1、单片机适用的数据加密算法有TEA,经过TEA加密的数据字节数和加密前的一样,只是数据不一样了
2、CRC:一个数据包,根据CRC算法的不同,可以得到不同长度的CRC值;CRC一方面保证数据不会被篡改,另一方面能检测传输过程是否出现错误
假定A为发送方,B为接收方
加密模型1:
A:发送:请求临时许可号+临时唯一编号(编号的目的:使第一次发送的请求临时许可号和第二次发送的数据为一组,只有接收到B返回的临时许可号,才进行第二次发送,编号可以使A知道所发送的请求临时许可号得到返回,而不是其他指令的许可号)
B:返回许可号(此许可号在A的有效期是30S)+临时唯一编号
A:发送:许可号(TEA加密过)+数据(TEA加密过)
B:根据和A进行协商的TEA加密算法进行解密,如果加密过的许可号有效则此数据包有效,否则无效;执行结果TEA加密返回
优点:在通信过程中,即使数据被截获,并且知道此数据的用途,当再次发送同样数据B,也是无效的,此时许可号已过期。截获方虽然也可以申请许可号,由于许可号位数很多,几乎不可能再申请到相同的许可号,截获的数据不能再次使用
缺点:A每执行一个数据包,需要发送两次数据包
注:数据包发送过程中可以没有CRC值,因为即使截获方修改了数据,但是得不到有效的许可号;虽然CRC值还检测数据传输过程中是否出现错误,暂时不考虑。
加密模型2:
A:发送:CRC值+数据(TEA加密过)
B:根据数据算出CRC值,和A发送来的CRC值是否一致,一致则表示数据包有效,否则无效;执行结果TEA加密返回
缺点:如果数据包被截获,即使截获方不知道CRC规则,只要原样把数据发送给B,B也认为数据包有效
优点:代码复杂度低,每执行一个数据包,只需要发送一次数据包;数据包修改后无效因为CRC值不对
以上是关于单片机通信的加密和解密的主要内容,如果未能解决你的问题,请参考以下文章