CN107682146B - 一种单片机通信方法 - Google Patents

一种单片机通信方法 Download PDF

Info

Publication number
CN107682146B
CN107682146B CN201710883742.7A CN201710883742A CN107682146B CN 107682146 B CN107682146 B CN 107682146B CN 201710883742 A CN201710883742 A CN 201710883742A CN 107682146 B CN107682146 B CN 107682146B
Authority
CN
China
Prior art keywords
data packet
random number
communication
encrypted random
singlechip
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710883742.7A
Other languages
English (en)
Other versions
CN107682146A (zh
Inventor
周新生
石永军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
WUXI COM-SHIP ELECTRONIC INDUSTRIAL Co Ltd
Original Assignee
WUXI COM-SHIP ELECTRONIC INDUSTRIAL Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by WUXI COM-SHIP ELECTRONIC INDUSTRIAL Co Ltd filed Critical WUXI COM-SHIP ELECTRONIC INDUSTRIAL Co Ltd
Priority to CN201710883742.7A priority Critical patent/CN107682146B/zh
Publication of CN107682146A publication Critical patent/CN107682146A/zh
Application granted granted Critical
Publication of CN107682146B publication Critical patent/CN107682146B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0869Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/04Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
    • H04L63/0428Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

本发明公开了一种单片机通信方法,属于通信领域。该方法包括生成第n个随机数,将第n个随机数与第n个第一加密随机数相加得到第n+1个第一加密随机数,第一加密随机数的初始值为第一预定值;将通信数据包的随机数设为第n+1个第一加密随机数;当数据体需要加密时,将通信数据包的加密标志设为第二预定值,以及利用第n+1个第一加密随机数、预设密码表、预设混淆表对数据体进行加密;预设密码表和预设混淆表预先存储在单片机中;将数据体放入通信数据包;发送通信数据包;解决了单片机在通信期间传输数据安全性不高的问题;达到了防止非法用户截取数据来模拟发送命令、提高数据传输安全性和可靠性的效果。

Description

一种单片机通信方法
技术领域
本发明实施例涉及通信领域,特别涉及一种单片机通信方法。
背景技术
单片机在通信时,若采用明文方式传输数据,任何截取工具都能够获取到正在传输的数据,导致数据安全性不高。在通信安全领域,在数据传输前通常会使用RSA、DES、3DES、MD5等加密算法加密,然而,这些加密算法比较复杂,普通的单片机难以实现。
发明内容
为了解决现有技术的问题,本发明实施例提供了一种单片机通信方法。该技术方案如下:
第一方面,提供了一种单片机通信方法,该方法包括:
生成第n个随机数,将第n个随机数与第n个第一加密随机数相加得到第n+1个第一加密随机数,n为大于等于1的正整数,第一加密随机数的初始值为第一预定值;
将通信数据包的随机数设为所述第n+1个第一加密随机数;
当数据体需要加密时,将所述通信数据包的加密标志设为第二预定值,以及利用所述第n+1个第一加密随机数、预设密码表、预设混淆表对所述数据体进行加密;所述预设密码表和所述预设混淆表预先存储在单片机中;
将所述数据体放入所述通信数据包;
发送所述通信数据包。
可选的,所述生成随机数之前,还包括:
接收新通信开始数据包,所述新通信开始数据包至少包括命令标识、版本号、索引、密钥数;
发送新通信回应数据包,所述新通信回应数据包至少包括支持结果;
在所述支持结果为支持时,存储所述索引和所述密钥数;
其中,所述版本号用于指示通信版本,所述通信版本与加密方法对应;所述索引和所述密钥数用于加密或解密数据体;所述支持结果用于表示单片机是否支持所述新通信开始数据包内的版本号对应的通信版本。
可选的,所述利用所述第n+1个第一加密随机数、预设密码表、预设混淆表对所述数据体进行加密,包括:
获取密钥数和索引;
计算所述第n+1个第一加密随机数的字节和;
将所述第n个第一加密随机数的字节和与所述密钥数求余,得到第一余数;
将所述字节和与第三预定值求余,得到第二余数;
根据所述第一余数、所述索引从所述预设密码表中确定第一辅助数;
根据所述第二余数从所述预设混淆表中确定第二辅助数;
将所述第一辅助数和所述第二辅助数求和,得到第三辅助数;
将所述数据体与所述第三辅助数异或,得到加密后的数据体;
其中,发送所述通信数据包的单片机中的预设密码表与接收所述通信数据包的单片机中的预设密码表相同,所述发送所述通信数据包的单片机中的预设混淆表与所述接收所述通信数据包的单片机中的预设混淆表相同。
可选的,所述接收新通信开始数据包之前,还包括:
接收通信停止数据包;
或,
检测所述第n+1个第一加密随机数与上限加密随机数之间的差值是否小于等于第四预定值,若检测到所述差值大于等于所述第四预定值,则发送请求重新通信数据包,接收通信停止数据包;
发送通信停止回应数据包;
清空第一加密随机数。
第二方面,提供了一种单片机通信方法,该方法包括:
接收通信数据包,所述通信数据包至少包括数据体、第一加密随机数和加密标志;
获取通信数据包中的所述第一加密随机数;
检测所述第一加密随机数是否大于上一个通信数据包中的第一加密随机数;
若检测到所述第一加密随机数大于所述上一个通信数据包中的第一加密随机数,则检测所述加密标志是否为第二预定值;
若检测到所述加密标志位为所述第二预定值,则获取所述数据体,利用所述第一加密随机数、预设密码表和预设混淆表对所述数据体进行解密;所述预设密码表和所述预设混淆表预先存储在单片机中。
可选的,所述接收通信数据包之前,还包括:
发送新通信开始数据包;所述新通信开始数据包至少包括命令标识、版本号、索引、密钥数;
接收新通信回应数据包;所述新通信回应数据包至少包括支持结果;
所述版本号用于指示通信版本,所述通信版本与加密方法对应;
所述索引和所述密钥数用于加密或解密数据体;
所述支持结果用于表示单片机是否支持所述新通信开始数据包内的版本号对应的通信版本。
可选的,所述发送新通信开始数据包之前,还包括:
随机生成所述索引和所述密钥数。
可选的,所述利用所述第一加密随机数、预设密码表和预设混淆表对所述数据体进行解密,包括:
计算所述第一加密随机数的字节和;
将所述字节和与密钥数取余,得到第一余数;
将所述字节和与第三预定值取余,得到第二余数;
根据所述第一余数、索引从所述预设密码表中确定出第一辅助数;
根据所述第二余数从所述预设混淆表中确定出第二辅助数;
所述第一辅助数与所述第二辅助数求和,得到第三辅助数;
将所述数据体与所述第三辅助数异或,得到解密后的数据体;
其中,发送所述通信数据包的单片机中的预设密码表与接收所述通信数据包的单片机中的预设密码表相同,所述发送所述通信数据包的单片机中的预设混淆表与所述接收所述通信数据包的单片机中的预设混淆表相同。
可选的,该方法还包括:
检测所述新通信回应数据包中的所述支持结果是否为支持;
若检测到所述支持结果为不支持,则重新执行所述发送新通信开始数据包的步骤。
可选的,所述发送新通信开始数据包之前,还包括:
发送通信停止数据包;
或,
接收请求重新通信数据包,发送通信停止数据包;
清空第一加密随机数;
接收通信停止回应数据包。
本发明实施例提供的技术方案带来的有益效果是:
通过第一单片机生成第n+1个第一加密随机数,利用第n+1个第一加密随机数加密数据体后发送通信数据包,第二单片机接收通信数据包,第二单片机获取第一加密随机数,并检测第一加密随机数是否大于上一次接收到的通信数据包中的第一加密随机数,当第一加密随机数大于上一次接收到的通信数据包中的第一加密随机数时,通过加密标志检测数据体是否加密,若检测到数据体加密,则利用第一加密随机数、预设密码表、预设混淆表解密数据体;解决了单片机在通信期间传输数据安全性不高的问题;达到了防止非法用户截取数据来模拟发送命令、提高数据传输安全性和可靠性的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据一示例性实施例示出的一种单片机通信系统的结构示意图;
图2是根据另一示例性实施例示出的一种单片机通信方法的流程图;
图3是根据另一示例性实施例示出的一种单片机通信方法的流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明一个实施例提供的单片机通信系统的结构示意图。该单片机通信系统包括至少一个主单片机和至少一个从单片机,如图1所示,以单片机110为主单片机,单片机120、单片机130、单片机140为从单片机为例。
预先在主单片机和从单片机中相同的存储预设密码表和相同的预设混淆表。
可选的,预设密码表为256字节。
可选的,预设混淆表为16字节。
主单片用于生成索引和随机数,索引和随机数用于加密或解密数据体。
主单片机用于停止当前通信周期、开启新的通信周期。
从单片机用于请求停止当前通信周期。
主从单片机均可发送通信数据包、接收通信数据包、加密通信数据包中的数据体、解密通信数据包中的数据体;当从单片机发送通信数据包时,主单片机接收通信数据包;当主单片机发送通信数据包时,从单片机接收通信数据包。
单片机之间通过无线网络或有线网络连接。
请参考图2,其示出了本发明一个实施例提供的单片机通信方法的流程图。该单片机通信方法适用于图1所示的单片机通信系统中。如图2所示,该单片机通信方法可以包括一下步骤:
步骤201,第一单片机生成第n个随机数,将第n个随机数与第n个第一加密随机数相加得到第n+1个第一加密随机数。
第一加密随机数的初始值为第一预定值。n为大于等于1的正整数。
可选的,第1个第一加密随机数为0。
当单片机需要发送通信数据包时,生成随机数。
在单片机将要初次发送通信数据包时,将第1个第一加密随机数设为第一预定值,再随机生成第1个随机数。
可选的,第n个随机数的取值范围为0x01至0xF0。
随机数的最大值为上限随机数,上限随机数的值为0x7FFFFFFFFFFF。
步骤202,第一单片机将通信数据包的随机数设为第n+1个第一加密随机数。
通信数据包的数据具有特定格式。
可选的,通信数据包由两个字节的包头、一个字节的包长、加密标志、六个字节的随机数、数据体、校验和构成,通信数据包的结构如表一所示。
表一
可选的,校验和为CRC(Cyclic Redundancy Check,循环冗余校验码)校验和。CRC校验和采用CRC16校验算法计算得到。
若数据体经过加密,则加密标志为第二预定值;若数据体未经过加密,则加密标志为0。
可选的,第二预定值为1。
步骤203,当数据体需要加密时,第一单片机将通信数据包的加密标志设置第二预定值,利用第n+1个第一加密随机数、预设密码表、预设混淆表对数据体进行加密。
预设密码表和预设混淆表预先存储在第一单片机中。
步骤204,第一单片机将数据体放入通信数据包。
若数据体经过加密,将加密后的数据体放入通信数据包的数据体位置处;若数据体未经过加密,则直接将数据体放入通信数据包的数据体位置处。
步骤205,第一单片机发送通信数据包。
步骤206,第二单片机接收通信数据包。
通信数据包至少包括数据体、第一加密随机数和加密标志。
第二单片机接收第一单片机发送的通信数据包。
步骤207,第二单片机获取通信数据包中的第一加密随机数。
第二单片机每接收一次通信数据包,获取通信数据包中的第一加密随机数并存储。
在第二单片机第一次接收到第一单片机发送的通信数据包时,其中的第一加密随机数为第一单片机生成的第2个第一加密随机数。
步骤208,第二单片机检测第一加密随机数是否大于上一个通信数据包中的第一加密随机数。
第二单片机检测本次接收到的通信数据包中的第一加密随机数是否大于上一个通信数据包中的第一加密随机数。
若检测到第一加密随机数大于上一个通信数据包中的第一加密随机数,则执行步骤209;若检测到第一加密随机数不大于上一个通信数据包中的第一加密随机数,则丢弃该通信数据包。
步骤209,在检测到第一加密随机数大于上一个通信数据包中的第一加密随机数时,第二单片机检测加密标志是否为第二预定值。
第二单片机获取通信数据包中的加密标志,检测加密标志是否为第二预定值。
若检测到加密标志为第二预定值,说明数据体经过加密,则执行步骤210。
若检测到加密标志不是第二预定值,则说明数据体未经过加密。
步骤210,在检测到加密标志为第二预定值时,第二单片机获取数据体,利用第一加密随机数、预设密码表、预设混淆表对数据体进行解密。
预设密码表和预设混淆表预先存储在第二单片机中。
若检测到加密标志为第二预定值时,第二单片机利用预设密码表、预设混淆表、本次接收到的通信数据包中的第一加密随机数对本次接收到的通信数据包中的数据体进行解密。
其中,发送通信数据包的第一单片机中的预设密码表与接收通信数据包的第二单片机中的预设密码表相同,发送通信数据包的第一单片机中的预设混淆表与接收通信数据包的第二单片机中的预设混淆表相同。
需要说明的是,步骤201至步骤205可单独实现称为第一单片机侧的方法实施例,步骤206只步骤210可单独实现称为第二单片机侧的方法实施例。
综上所述,本发明实施例提供的单片机通信方法,通过第一单片机生成第n+1个第一加密随机数,利用第n+1个第一加密随机数加密数据体后发送通信数据包,第二单片机接收通信数据包,第二单片机获取第一加密随机数,并检测第一加密随机数是否大于上一次接收到的通信数据包中的第一加密随机数,当第一加密随机数大于上一次接收到的通信数据包中的第一加密随机数时,通过加密标志检测数据体是否加密,若检测到数据体加密,则利用第一加密随机数、预设密码表、预设混淆表解密数据体;解决了单片机在通信期间传输数据安全性不高的问题;达到了防止非法用户截取数据来模拟发送命令、提高数据传输安全性和可靠性的效果。
需要说明的是,步骤201至步骤205还可以由第二单片机执行,步骤206至步骤210还可以由第一单片机执行;当第二单片机向第一单片机发送通信数据包时,第二单片机生成第二加密随机数,利用给第二加密随机数、预设密码表和预设混淆表加密通信数据包中的数据体,第一单片机检测第二加密随机数。
在单片机的实际工作过程中,第一单片机和第二单片机开始通信需要由两个单片机中的主单片机向从单片机发送新通信开始数据包,从单片机接收新通信开始数据包后向主单片机发送新通信回应数据包,第一单片机和第二单片机建立新通信,第一单片机和第二单片机中的从单片机可以主动向主单片机发送状态信息;在主单片机向从单片机发送新通信开始数据包之前,还需要清除上一次通信过程中存储的加密随机数。
请参考图3,其示出了本发明另一个实施例提供的单片机通信方法的流程图。该单片机通信方法适用于图1所示的单片机通信系统中。如图3所示,假设第二单片机为主单片,第一单片机为从单片机,该单片机通信方法可以包括一下步骤:
步骤301,第二单片机随机生成索引和密钥数。
索引和密钥数为随机数。可选的,索引的取值范围为0至255;密钥数的取值范围为4至16。
步骤302,第二单片机发送新通信开始数据包。
新通信开始数据包至少包括命令标识、版本号、索引、密钥数。
版本号用于指示通信版本,通信版本与加密方法对应。
一个版本号对应一个通信版本,当通信版本发生变化时,版本号也随之变化。
若单片机中的主单片机支持的高级通信版本,则主单片机支持低级通信版本。
索引和密钥数用于加密或解密数据体。
新通信开始数据包还包括包头、包长、随机数和校验和。
可选的,校验和为CRC(Cyclic Redundancy Check,循环冗余校验码)校验和。CRC校验和采用CRC16校验算法计算得到。
表二示例性地示出了一种新通信开始数据包的格式。
表二
步骤303,第一单片机接收新通信开始数据包。
新通信开始数据包至少包括命令标识、版本号、索引、密钥数。
第一单片机获取新通信开始数据包中的命令标识和版本号。
第一单片机检测是否支持版本号对应的通信版本,得到支持结果。
支持结果用于表示单片机是否支持新通信开始数据包内的版本号对应的通信版本。
支持结果为支持或不支持。
步骤304,第一单片机发送新通信回应数据包。
新通信回应数据包至少包括支持结果。
当第一单片机支持版本号对应的通信版本时,支持结果为支持,当第一单片机不支持版本号对应的通信版本时,支持结果为不支持。
新通信回应数据包还包括包头、包长、随机数、命令标识、支持结果、校验和。
表三示例性地示出了一种新通信回应数据包的格式。
表三
步骤305,在支持结果为支持时,第一单片机存储索引和密钥数。
需要说明的是,步骤304和步骤305可以同时执行,或者,步骤305在步骤304之前执行,本发明实施例对此不作限定。
步骤306,第二单片机接收新通信回应数据包。
第二单片机获取新通信回应数据包中的支持结果,并检测新通信回应数据包中的支持结果是否为支持。
若检测到支持结果为不支持,则重新执行发送新通信开始数据包的步骤。
重新发送的新通信开始数据包中的版本号改变,改变的版本号对应的通信版本低于上一个新通信开始数据包中的版本号对应的通信版本;相应地,索引和密钥数也发生变化。
重新执行发送新通信开始数据包的步骤直到接收到的新通信回应数据包中的支持结果为支持。
此时,第一单片机和第二单片机完成建立新通信。
步骤307,第一单片机生成第n个随机数,将第n个随机数与第n个第一加密随机数相加得到第n+1个第一加密随机数。
n为大于等于1的正整数,第一加密随机数的初始值为第一预定值。
可选的,第一预定值为0,即第1个加密随机数为0。
需要说明的是,当第一单片机和第二单片机建立新通信后,第一单片机需要重新生成第一密钥随机数,在第一单片机第一次向第二单片机发送通信数据包时,第一单片机生成第1个随机数,将第1个随机数与第1个第一加密随机数相加,得到第2个第一加密随机数。
第一单片机每发送一次通信数据包,按步骤307生成一个第一加密随机数,在一个通信周期中,每次生成的第一加密随机数不同。一个通信周期是指以第一单片机发送新通信回应数据包为开始,以第一单片机发送通信停止回应数据包为结束。
步骤308,第一单片机将通信数据包的随机数设为第n+1个第一加密随机数。
步骤309,当数据体需要加密时,第一单片机将通信数据包的加密标志位设为第二预定值,利用第n+1个第一加密随机数、预设密码表、预设混淆表对数据体进行加密。
可选的,第二预定值为1。
比如:当数据体需要加密时,第一单片机将通信数据包中的加密标志设为1;当数据体不需要加密时,第一单片机将通信数据包中的加密位设置为0。
其中,利用第一加密随机数、预设密码表、预设混淆表对数据体进行加密,由如下几个步骤实现:
步骤3091,第一单片机获取密钥数和索引。
密钥数和索引是第二单片机通过新通信开始数据包发送的。
步骤3092,第一单片机计算第n+1个第一加密随机数的字节和。
第一加密随机数的字节和等于第一加密随机数每个字节的值之和。
假设字节和为byte_sum,第一加密随机数RandomBuff[n]的长度为len,则第一加密随机数的字节和的计算方法如下:
步骤3093,第一单片机将第n+1个第一加密随机数的字节和与密钥数求余,得到第一余数。
步骤3094,第一单片机将字节和与第三预定值求余,得到第二余数。
可选的,第三预定值为16。
步骤3095,第一单片机根据第一余数、索引从预设密码表中确定第一辅助数。
假设索引为index,密钥数为key_number,第一余数为ni,第一辅助数为CommKeyCodeBuff[ni],预设密码表为KEY_CODE_TABLE[256],确定第一辅助数CommKeyCodeBuff[ni]的方法如下:
步骤3096,第一单片机根据第二余数从预设混淆表中确定第二辅助数。
假设第二余数为oi,第二辅助数为OBFUSCATED_CODE_TABLE[oi]。
步骤3097,第一单片机将第一辅助数和第二辅助数求和,得到第三辅助数。
当第一辅助数与第二辅助数求和有进位产生时,将进位舍去,得到第三辅助数。
步骤3098,第一单片机将数据体与第三辅助数异或,得到加密后的数据体。
需要说明的是,预设密码表和预设混淆表预先存储在第一单片机和第二单片机中。发送通信数据包的单片机中的预设密码表与接收通信数据包的单片机中的预设密码表相同,发送通信数据包的单片机中的预设混淆表与接收通信数据包的单片机中的预设混淆表相同。
步骤310,第一单片机将数据体放入通信数据包。
若数据体经过加密,则第一单片机将加密后的数据体放入通信数据包中;若数据体未经过加密,则不执行上述步骤309,第一单片机直接执行步骤310,将未经过加密的数据体放入通信数据包。
步骤311,第一单片机发送通信数据包。
步骤312,第二单片机接收通信数据包。
第二单片机接收第一单片机发送的通信数据包。
步骤313,第二单片机获取通信数据包中的第一加密随机数。
可选的,第二单片机检测是否接收到包头数据,若接收到包头数据,则取出包长,检测是否接收到包长的数据,若未检测到包长的数据,则放弃此次解包过程,重新等待接收新的通信数据包;若检测到包长的数据,则计算校验和,判断计算出的校验和是否等于通信数据包中的校验和,若校验和相等,则执行步骤314。
步骤314,第二单片机检测第一加密随机数是否大于上一个通信数据包中的第一加密随机数。
第二单片机检测本次接收到的通信数据包中的第一加密随机数是否大于上一个通信数据包中的第一加密随机数。
若检测到第一加密随机数大于上一个通信数据包中的第一加密随机数,则存储本次接收到的通信数据包中的第一加密随机数,并执行步骤315;若检测到第一加密随机数不大于上一个通信数据包中的第一加密随机数,则丢弃该通信数据包。
步骤315,若检测到第一加密随机数大于上一个通信数据包中的第一加密随机数,则第二单片机检测加密标志位第二预定值。
第二单片机获取通信数据包中的加密标志,检测加密标志是否为第二预定值。
可选的,第二预定值为1。
若检测到加密标志为第二预定值,说明数据体经过加密,则执行步骤316。
若检测到加密标志不是第二预定值,则说明数据体未经过加密,直接获取未加密的数据体。
步骤316,若检测到加密标志位为第二预定值,则第二单片机获取数据体,利用第一加密随机数、预设密码表和预设混淆表对数据体进行解密。
其中,利用第一加密随机数、预设密码表和预设混淆表对数据体进行解密由如下几个步骤实现:
步骤3161,计算第一加密随机数的字节和。
该步骤已在步骤3092进行了阐述,这里不再赘述。
步骤3162,将字节和与密钥数取余,得到第一余数。
该步骤已在步骤3093进行了阐述,这里不再赘述。
步骤3163,将字节和与第三预定值取余,得到第二余数。
该步骤已在步骤3094进行了阐述,这里不再赘述。
步骤3164,根据第一余数、索引从预设密码表中确定出第一辅助数。
该步骤已在步骤3095进行了阐述,这里不再赘述。
步骤3165,根据第二余数从预设混淆表中确定出第二辅助数。
该步骤已在步骤3096进行了阐述,这里不再赘述。
步骤3166,第一辅助数与第二辅助数求和,得到第三辅助数。
该步骤已在步骤3097进行了阐述,这里不再赘述。
步骤3167,将数据体与第三辅助数异或,得到解密后的数据体。
将加密的数据体与第三辅助数异或,得到解密后的数据体。
综上所述,本发明实施例提供的单片机通信方法,通过第一单片机生成第一加密随机数,利用第一加密随机数加密数据体后发送通信数据包,第二单片机接收通信数据包,第二单片机获取第一加密随机数,并检测第一加密随机数是否大于上一次接收到的通信数据包中的第一加密随机数,当第一加密随机数大于上一次接收到的通信数据包中的第一加密随机数时,通过加密标志检测数据体是否加密,若检测到数据体加密,则利用第一加密随机数、预设密码表、预设混淆表解密数据体;解决了单片机通信期间传输数据安全性不高的问题;达到了防止非法用户截取数据来模拟发送命令、提高数据传输安全性和可靠性的效果。
此外,每次生成的第一加密随机数均不能重复发送,以及预设密码表和预设混淆表相结合,保证即使每次发送的命令相同,但发送的加密的数据体也不相同,增加了解密的复杂度和难度。
此外,该单片机通信方法中对数据体加密的方法简单,实现方便,对单片机的资源要求不高。
需要说明的是,上述步骤307至311还可以由第二单片机执行,上述步骤312至步骤316还可以有第一单片机执行;当第二单片机向第一单片机发送通信数据包时,第二单片机生成第二加密随机数,利用给第二加密随机数、预设密码表和预设混淆表加密通信数据包中的数据体,第一单片机检测第二加密随机数。
本发明实施例提供的单片机通信方法中,第一单片机每次生成第n+1个第一加密随机数后,需要检测第一加密随机数的大小,避免第一加密随机数溢出,当检测到第一加密随机数的大小即将溢出时,第一单片机需要向第二单片机发送请求重新通信数据包;当第一单片机接收到第二单片机发送的通信停止数据包时,发送通信停止回应数据包,并等到第二单片机重新发送新通信开始数据包。
在如图1或图2所示实施例的可选实施例中,在第一单片机生成第n+1个第一加密随机数后,该单片机通信方法还包括如下几个步骤:
步骤401,第一单片机检测第n+1个第一加密随机数与上限加密随机数之间的差值是否小于等于第四预定值。
若检测到第n+1个第一加密随机数与上限加密随机数之间的差值小于等于第四预定值,则执行步骤308;若检测到第n+1个第一加密随机数与上限加密随机数之间的差值大于第四预定值,则执行步骤402。
步骤402,第一单片机发送请求重新通信数据包。
第一单片机发送请求重新通信数据包后,停止发送通信数据包;若第二单片机仍发送除通信停止数据包以外的命令,第一单片机不响应,继续执行步骤402。
可选的,请求重新通信数据包包括包头、包长、随机数、命令标识和校验和。
表四示例性地示出了一种请求重新通信数据包的格式。
表四
步骤403,第二单片机接收请求重新通信数据包,发送通信停止数据包。
第二单片机发送通信停止数据包,并清除存储的所有第一加密随机数和第二单片机生成的第二加密随机数
可选的,通信停止数据包包括包头、包长、随机数、命令标识和校验和。
表五示例性地示出了一种通信停止数据包的格式。
表五
步骤404,第一单片机接收通信停止数据包。
步骤405,第一单片机发送通信停止回应数据包。
第一单片机发送通信停止回应数据包,并清除存储的所有第一加密随机数和第二单片机发送的第二加密随机数。
可选的,通信停止回应数据包包括包头、包长、随机数、命令标识和校验和。
表六示例性地示出了一种通信停止回应数据包的格式。
表六
步骤406,第二单片机接收通信停止回应数据包。
此外,当第一单片机和第二单片机中的主单片机断电,第一单片机和第二单片机的通信中断,在主单片机重新上电后,需要建立第一单片机和第二单片机的新通信,假设第二单片机为主单片机,第一单片机为从单片机,该过程如下:
第二单片机向第一单片机发送通信停止数据包,并清空存储的第一加密随机数和第二加密随机数,第一单片机接收通信停止数据包,第一单片机清空存储的第一加密随机数和第二加密随机数,第一单片机发送通信停止回应数据包,第二单片机接收通信停止回应数据包,第二单片机发送新通信开始数据包;其中,第二加密随机数是第二单片机生成的。
需要说明的是:上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种单片机通信方法,其特征在于,所述方法包括:
生成第n个随机数,将第n个随机数与第n个第一加密随机数相加得到第n+1个第一加密随机数,n为大于等于1的正整数,第一加密随机数的初始值为第一预定值;
将通信数据包的随机数设为所述第n+1个第一加密随机数;
当数据体需要加密时,将所述通信数据包的加密标志设为第二预定值,以及利用所述第n+1个第一加密随机数、预设密码表、预设混淆表对所述数据体进行加密;所述预设密码表和所述预设混淆表预先存储在单片机中;
将所述数据体放入所述通信数据包;
发送所述通信数据包;
其中,所述利用所述第n+1个第一加密随机数、预设密码表、预设混淆表对所述数据体进行加密,包括:
获取密钥数和索引;
计算所述第n+1个第一加密随机数的字节和;
将所述第n+1个第一加密随机数的字节和与所述密钥数求余,得到第一余数;
将所述字节和与第三预定值求余,得到第二余数;
根据所述第一余数、所述索引从所述预设密码表中确定第一辅助数;
根据所述第二余数从所述预设混淆表中确定第二辅助数;
将所述第一辅助数和所述第二辅助数求和,得到第三辅助数;
将所述数据体与所述第三辅助数异或,得到加密后的数据体;
其中,发送所述通信数据包的单片机中的预设密码表与接收所述通信数据包的单片机中的预设密码表相同,所述发送所述通信数据包的单片机中的预设混淆表与所述接收所述通信数据包的单片机中的预设混淆表相同。
2.根据权利要求1所述的方法,其特征在于,所述生成随机数之前,还包括:
接收新通信开始数据包,所述新通信开始数据包至少包括命令标识、版本号、索引、密钥数;
发送新通信回应数据包,所述新通信回应数据包至少包括支持结果;
在所述支持结果为支持时,存储所述索引和所述密钥数;
其中,所述版本号用于指示通信版本,所述通信版本与加密方法对应;所述索引和所述密钥数用于加密或解密数据体;所述支持结果用于表示单片机是否支持所述新通信开始数据包内的版本号对应的通信版本。
3.根据权利要求1所述的方法,其特征在于,所述接收新通信开始数据包之前,还包括:
接收通信停止数据包;
或,
检测所述第n+1个第一加密随机数与上限加密随机数之间的差值是否小于等于第四预定值,若检测到所述差值大于等于所述第四预定值,则发送请求重新通信数据包,接收通信停止数据包;
发送通信停止回应数据包;
清空第一加密随机数。
4.一种单片机通信方法,其特征在于,所述方法包括:
接收通信数据包,所述通信数据包至少包括数据体、第一加密随机数和加密标志;
获取通信数据包中的所述第一加密随机数;
检测所述第一加密随机数是否大于上一个通信数据包中的第一加密随机数;
若检测到所述第一加密随机数大于所述上一个通信数据包中的第一加密随机数,则检测所述加密标志是否为第二预定值;
若检测到所述加密标志位为所述第二预定值,则获取所述数据体,利用所述第一加密随机数、预设密码表和预设混淆表对所述数据体进行解密;所述预设密码表和所述预设混淆表预先存储在单片机中;
其中,所述利用所述第一加密随机数、预设密码表和预设混淆表对所述数据体进行解密,包括:
计算所述第一加密随机数的字节和;
将所述字节和与密钥数取余,得到第一余数;
将所述字节和与第三预定值取余,得到第二余数;
根据所述第一余数、索引从所述预设密码表中确定出第一辅助数;
根据所述第二余数从所述预设混淆表中确定出第二辅助数;
所述第一辅助数与所述第二辅助数求和,得到第三辅助数;
将所述数据体与所述第三辅助数异或,得到解密后的数据体;
其中,发送所述通信数据包的单片机中的预设密码表与接收所述通信数据包的单片机中的预设密码表相同,所述发送所述通信数据包的单片机中的预设混淆表与所述接收所述通信数据包的单片机中的预设混淆表相同。
5.根据权利要求4所述的方法,其特征在于,所述接收通信数据包之前,还包括:
发送新通信开始数据包;所述新通信开始数据包至少包括命令标识、版本号、索引、密钥数;
接收新通信回应数据包;所述新通信回应数据包至少包括支持结果;
所述版本号用于指示通信版本,所述通信版本与加密方法对应;
所述索引和所述密钥数用于加密或解密数据体;
所述支持结果用于表示单片机是否支持所述新通信开始数据包内的版本号对应的通信版本。
6.根据权利要求5所述的方法,其特征在于,所述发送新通信开始数据包之前,还包括:
随机生成所述索引和所述密钥数。
7.根据权利要求5所述的方法,其特征在于,所述方法还包括:
检测所述新通信回应数据包中的所述支持结果是否为支持;
若检测到所述支持结果为不支持,则重新执行所述发送新通信开始数据包的步骤。
8.根据权利要求5所述的方法,其特征在于,所述发送新通信开始数据包之前,还包括:
发送通信停止数据包;
或,
接收请求重新通信数据包,发送通信停止数据包;
清空第一加密随机数;
接收通信停止回应数据包。
CN201710883742.7A 2017-09-26 2017-09-26 一种单片机通信方法 Active CN107682146B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710883742.7A CN107682146B (zh) 2017-09-26 2017-09-26 一种单片机通信方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710883742.7A CN107682146B (zh) 2017-09-26 2017-09-26 一种单片机通信方法

Publications (2)

Publication Number Publication Date
CN107682146A CN107682146A (zh) 2018-02-09
CN107682146B true CN107682146B (zh) 2019-09-03

Family

ID=61136359

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710883742.7A Active CN107682146B (zh) 2017-09-26 2017-09-26 一种单片机通信方法

Country Status (1)

Country Link
CN (1) CN107682146B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110176992B (zh) * 2019-05-29 2022-06-03 恒宝股份有限公司 安全密钥管理系统和方法及其安全元件

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101471769B (zh) * 2007-12-28 2011-12-28 北京大唐高鸿数据网络技术有限公司 一种适于VoIP媒体传输的加解密方法
CN101924631A (zh) * 2009-06-09 2010-12-22 刘海云 动态映射加密的方法
CN101702117A (zh) * 2009-11-09 2010-05-05 东南大学 一种基于离散渐进确定性随机的伪随机序列发生方法
CN106612182B (zh) * 2016-12-22 2020-04-03 中国电子科技集团公司第三十研究所 一种基于余数系统的sm2白盒数字签名实现方法
CN106685662B (zh) * 2016-12-23 2019-09-24 中国电子科技集团公司第三十研究所 一种基于余数系统的商密sm2加密算法的白盒软件实现方法
CN106850221B (zh) * 2017-04-10 2019-11-08 四川阵风科技有限公司 信息加密、解密方法及装置

Also Published As

Publication number Publication date
CN107682146A (zh) 2018-02-09

Similar Documents

Publication Publication Date Title
CN109150835B (zh) 云端数据存取的方法、装置、设备及计算机可读存储介质
CN104539439B (zh) 数据传输方法及终端
CN108345806B (zh) 一种硬件加密卡和加密方法
EP2658299A1 (en) Method, network side entity and communication terminal for protecting data security
CN101835156B (zh) 一种用户接入安全保护的方法及系统
CN109688098B (zh) 数据的安全通信方法、装置、设备及计算机可读存储介质
CN111740942B (zh) 一种登录/注册方法、装置、系统、电子设备及存储介质
CN110611670A (zh) 一种api请求的加密方法及装置
CN104866784B (zh) 一种基于bios加密的安全硬盘、数据加密及解密方法
JP2016012912A (ja) 送信ノード、受信ノード、通信ネットワークシステム、メッセージ作成方法およびコンピュータプログラム
CN109005027A (zh) 一种随机数据加解密法、装置及系统
CN109714360A (zh) 一种智能网关及网关通信处理方法
CN105281910A (zh) 带ca数字证书作为入网身份识别的物联网锁及其入网身份识别方法
CN107896222A (zh) 一种数据处理方法及系统
CN107483388A (zh) 一种安全通信方法及其终端和云端
CN107070874A (zh) 广播通信的系统、加密方法及装置、解密方法及装置
KR101673827B1 (ko) 단방향 키 전환 방법 및 구현 기기
CN106156677A (zh) 身份证读卡方法和系统
CN107682146B (zh) 一种单片机通信方法
CN110049045B (zh) 一种电力载波的安全认证系统
CN106549754A (zh) 管理密钥的方法和装置
CN111917796B (zh) 一种电网设备通信方法
EP2993856A1 (en) Establishment of communication connection between mobile device and secure element
CN106257858A (zh) 一种远端存储设备的数据加密方法、装置及系统
CN110278077B (zh) 一种用于获取电能表数据信息的方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant