首页 > 代码库 > 单片机通信的加密和解密

单片机通信的加密和解密

通信,有时候为了保证截获方即使得到了数据包,也不知道内容,所以加密传输即可;但有时候不需要知道数据包的内容,只要知道知道数据包能干嘛即可,比如发指令,此种情况单单对数据包进行加密就不够了。

 

基础知识:

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值不对

单片机通信的加密和解密