一种单片机串口通讯加密方法
技术领域
本发明涉及一种单片机串口通讯加密方法,本发明涉及对信息数据的交互处理、信息加解密处理、加密交互方法在单片机上的实现。
背景技术
现有的单片机串口通讯在驱动层都是明文通讯,这在一些安全类的产品应用中,如果不在应用层做加密处理,如意泄露敏感信息。现有的一些对称加密技术,如AES、RSA等,理论上可以用于单片机串口消息应用层的加密,但是单片机这种资源受限,算法不适用于单片机系统。
现有的单片机串口通讯,涉及到敏感数据通信时,通过软件对数据总线监听或使用硬件采集总线电气特性就能够抓取到交互的敏感数据,如果传输时不对数据做出任何加密处理,将采集到的数据向单片机发送,仍然会被单片机接受并作出正确的处理,这在一些安全类的产品应用中是不允许的。现有的一些对称加密技术,如AES、RSA等,理论上可以用于单片机串口消息的加密,但是对于单片机这种资源受限的系统来说,计算量过大,占用资源过多,且同样存在加密的数据被抓包后仍然有效的风险。
发明内容
本发明的目的是针对现有技术存在的不足,提供一种单片机串口通讯加密方法,加密算法计算量低,容易实现,并且占用的单片机资源极低。
为实现上述目的,本发明提供了一种单片机串口通讯加密方法,包括以下步骤,
S1、将与单片机通讯的设备作为主机,然后发送一段数组A,开始发起一次交互指令;
S2、单片机作为从机接收交互指令,并且回复数组B,所述数组B记为dataB[],并且按照如下规则组织数据:dataB[]={xx,index,xx,xx,xx,xx,xx,xx,....,data[index],......},将index在数组B中所在的索引位置记为I;
S3、主机接收的数组B并且解析,先取出dataB[I]的值记录为index2,然后取出dataB[index2]的值记录为index3,然后主机发命令数组C,所述数组C记为dataC[],将需要发送的命令放在dataC[index3]中,主机发送命令dataC[]=(dataC[index3]=cmd);
S4、从机接收到数组C,取数据dataC[]中索引为index3的数据作为要执行的命令;
S5、从机判断命令是否符合要求并执行或拒绝执行命令,完成一次交互,从机内部会设置一个交互标志位。
作为上述方案的进一步地改进,所述数组B的数据中,index代表数组索引,data[index]代表数组B中第index个数据。
作为上述方案的进一步地改进,所述步骤S5中当命令执行完毕或命令数据错误,标志会被清除,代表本次交互失效。
作为上述方案的进一步地改进,所述步骤S1中的数组A根据主机和从机约定的规则,每次生成一串随机的数据,数据仅一次有效,一旦执行完步骤S5,本次交互即结束,数组A失效,需要重新进行下一次交互。
作为上述方案的进一步地改进,在数组A失效后,若再次向单片机发送同样的数据,因数据已经失效,单片机不会执行指令。
作为上述方案的进一步地改进,所述步骤S2中的索引位置I随机地改变,防止出现数据被抓包分析的问题。
本发明的有益效果为:这种单片机串口通讯加密方法加密算法计算量低,容易实现,因此占用的单片机资源极低;总线数据一次有效,通讯过程中,如果被抓取后再次发送,数据不会被单片机响应;可以有效防止抓包分析破解协议的行为;数据交互过程不存在复杂的计算,通过简单的一位操作即可完成,消耗极低的处理器及内存资源,因此特别适用单片机这种资源受限的嵌入式系统。
附图说明
图1是本发明实施例提供的一种可单片机串口通讯加密方法的流程示意图;
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例的附图,对本发明实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员所获得的所有其他实施例,都属于本发明保护的范围。
实施例1
根据图1所示的一种单片机串口通讯加密方法,包括以下步骤:
S1、将与单片机通讯的设备作为主机,然后发送一段数组A,开始发起一次交互指令;
S2、单片机作为从机接收交互指令,并且回复数组B,所述数组B记为dataB[],并且按照如下规则组织数据:dataB[]={xx,index,xx,xx,xx,xx,xx,xx,....,data[index],......}数据中,将index在数组B中所在的索引位置记为I,I的位置根据双方协商,可以随机地改变,随机地数据可以有效防止数据被抓包分析问题;
S3、主机接收的数组B并且解析,先取出dataB[I]的值记录为index2,然后取出dataB[index2]的值记录为index3(index3=data[index]),然后主机发命令数组C,所述数组C记为dataC[],将需要发送的命令放在dataC[index3]中,主机发送命令dataC[]=(dataC[index3]=cmd);
S4、从机接收到数组C,取数据dataC[]中索引为index3的数据作为要执行的命令;
S5、从机判断命令是否符合要求并执行或拒绝执行命令,完成一次交互,从机内部会设置一个交互标志位。
本实施例中,所述数组B的数据中,index代表数组索引,xx代表随机的数据,data[index]代表数组B中第index个数据,所述步骤S5中当命令执行完毕或命令数据错误,标志会被清除,代表本次交互失效,所述步骤S2中的索引位置I随机地改变,防止出现数据被抓包分析的问题。
进一步地,所述步骤S1中的数组A根据主机和从机约定的规则,每次生成一串随机的数据,数据仅一次有效,一旦执行完步骤S5,本次交互即结束,数组A失效,需要重新进行下一次交互,在数组A失效后,若再次向单片机发送同样的数据,因数据已经失效,单片机不会执行指令。
总而言之,根据上述实施例所述的这种单片机串口通讯加密方法加密算法计算量低,容易实现,因此占用的单片机资源极低;总线数据一次有效,通讯过程中,如果被抓取后再次发送,数据不会被单片机响应;可以有效防止抓包分析破解协议的行为;数据交互过程不存在复杂的计算,通过简单的一位操作即可完成,消耗极低的处理器及内存资源,因此特别适用单片机这种资源受限的嵌入式系统。
对于本领域技术人员而言,显然本实用新型不限于上述示范性实施例的细节,而且在不背离本实用新型的精神或基本特征的情况下,能够以其他的具体形式实现本实用新型。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本实用新型的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本实用新型内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。