单片机通信的加密和解密

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

 

基础知识:

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

posted @   流水灯  阅读(3569)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
历史上的今天:
2016-05-16 smartconfig/smartlink
2016-05-16 STM32擦除FLASH,中断不能用,读FLASH中断可以用
2016-05-16 裸机算法之单片机不死机的喂狗方法
点击右上角即可分享
微信分享提示