软件升级包封装方法和装置、解封装方法和装置与流程

文档序号:24539417发布日期:2021-04-02 10:22阅读:89来源:国知局
软件升级包封装方法和装置、解封装方法和装置与流程

本发明涉及计算机技术领域,具体涉及一种软件升级包封装方法、一种软件升级包解封装方法、一种软件升级包封装装置、一种软件升级包解封装装置、一种计算机设备和一种非临时性计算机可读存储介质。



背景技术:

随着第五代移动网络(5g)的商业应用,智能化、信息化已经深入各行各业,电子产品越来越普及。软件作为一种基于硬件承载的特殊产品,功能越来越多,开发周期也越来越短,随之而来带来产品bug、原有功能的不能满足现有发展的需求等等问题。为了解决这一问题,产品发布方往往发布新的软件版本来解决这些问题。这些新的软件如何应用到设备上,这就是软件升级过程。

软件升级现在也越来越普及,比如桌面操作系统(如windows、macos、linux)的升级,手机应用软件(如微信、抖音、地图、支付宝、淘宝、京东等等)的升级,智能设备(比如智能电视、机顶盒、智能音箱)的开机升级,再如鸿蒙操作系统(harmonyos)从1.0到2.0,以后3.0等等,这些都属于软件升级。

软件升级有可能是直接基于硬件的软件升级(如设备驱动升级),有可能是在软件之上的软件升级(如手机上的微信、抖音、导航软件等升级),还有可能是前述二者均有的软件升级。软件有可能是底层软件、平台软件、应用软件、通用软件、定制软件等。总之,软件形式种类繁多,只要涉及到升级,都属于软件升级。

当软件发布方发布新的软件后,上传至指定的软件服务器上。运行原有软件的设备通常有两种方式来获取是否有新发布的软件。其一,软件服务器通知设备有新版本软件,可以进行软件升级,设备获得消息后进行确认;其二,运行软件的设备主动向服务器查询是否有新版本软件,服务器收到查询消息后应答新版本消息给设备,之后服务器向设备下传新版本软件,设备收到后进行软件升级。

从上述通用流程也可知,软件升级包从发布方发布新版本开始,到最终的设备上进行升级,中间需经过很多环节,这些环节可能通过了公共的数据通道,存放的服务器也可能存放于公共的外部网络环境之中,所有这些环节给原始数据包的有效性带来了一定风险。



技术实现要素:

本发明为解决上述技术问题,提供了一种软件升级包封装方法,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

本发明采用的技术方案如下:

一种软件升级包封装方法,包括以下步骤:获取软件升级文件包,其中,所述软件升级文件包包括:包头、包体和包尾;对所述包体中的数据进行重新封装;按照预设大小对重新封装后的包体进行分割;对分割后的每个子包进行二次封装处理,并为每个子包加上子包头;根据所述包头、每个子包头与其对应的子包和包尾获得封装后的软件升级文件包。

根据本发明的一个实施例,对所述包体中的数据进行重新封装,包括:对所述包体进行md5(messagedigestalgorithmmd5,消息摘要算法)加密封装;对md5加密封装后的包体进行aes(advancedencryptionstandard,高级加密标准)加密封装;将aes加密封装后的摘要信息放入所述包头中,其中,所述摘要信息包括:md5的hash值、aes的数字签名信息、软件升级文件包的长度、公司信息、升级文件硬件设备信息、分割的文件包数量。

根据本发明的一个实施例,对分割后的每个子包进行二次封装处理,包括:

采用crc(cyclicredundancycheck,循环冗余校验码)校验的方式进行二次封装处理;将校验和存储在对应的子包头中,其中,子包头包括:子包大小、子包序列号、子包的校验和、子包的起始地址。

本发明还提出了一种软件升级包解封装方法,包括以下步骤:获取软件升级文件包,其中,所述软件升级文件包包括:包头、包体和包尾;对所述软件升级文件包的包头进行解析,以获取摘要信息;对每个子包进行解析,以获取子包头信息,其中,所述子包头信息包括:子包大小、子包序列号、子包的校验和、子包的起始地址;将每个子包对应的子包头删除,并根据子包数据获取新的软件升级文件包;对所述新的软件升级文件包进行aes解封装,以得到解封后的软件升级文件包。

根据本发明的一个实施例,上述的软件升级包解封装方法,还包括:根据所述包头中的md5的hash值对解封后的软件升级文件包进行校验,其中,当校验失败时,退出软件升级包解封装过程。

本发明还提出了一种软件升级包封装装置,包括:第一获取模块,用于获取软件升级文件包,其中,所述软件升级文件包包括:包头、包体和包尾;第一封装模块,用于对所述包体中的数据进行重新封装;分割模块,用于按照预设大小对重新封装后的包体进行分割;第二封装模块,用于对分割后的每个子包进行二次封装处理,并为每个子包加上子包头;第二获取模块,用于根据所述包头、每个子包头与其对应的子包和包尾获得封装后的软件升级包。

本发明还提出了一种软件升级包解封装装置,包括:第三获取模块,用于获取软件升级文件包,其中,所述软件升级文件包包括:包头、包体和包尾;解析模块,用于对所述软件升级文件包的包头进行解析,以获取摘要信息,并对每个子包进行解析,以获取子包头信息,其中,所述子包头信息包括:子包大小、子包序列号、子包的校验和、子包的起始地址;第四获取模块,用于将每个子包对应的子包头删除,并根据子包数据获取新的软件升级文件包;解封模块,用于对所述新的软件升级文件包进行aes解封装,以得到解封后的软件升级文件包。

本发明还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时,实现上述的软件升级包封装方法或者实现上述的软件升级包解封装方法。

本发明还提出了一种非临时性计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现上述的软件升级包封装方法或者实现上述的软件升级包解封装方法。

本发明的有益效果:

本发明首先获取软件升级文件包,并对包体中的数据进行重新封装;然后按照预设大小对重新封装后的包体进行分割,并对分割后的每个子包进行二次封装处理,并为每个子包加上子包头,最后根据包头、每个子包头与其对应的子包和包尾获得封装后的软件升级文件包。本发明的封装方法,通过对软件升级文件包进行再次封装,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

附图说明

图1为本发明实施例的软件升级包封装方法的流程图;

图2为本发明一个实施例的软件升级包封装方法的示意图;

图3为本发明实施例的软件升级包解封装方法的流程图;

图4为本发明一个实施例的软件升级包解封装方法的示意图;

图5为本发明实施例的软件升级包封装装置的方框示意图;

图6为本发明实施例的软件升级包解封装装置的方框示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1为本发明实施例的软件升级包封装方法的流程图。

如图1所示,本发明实施例的软件升级包封装方法可包括以下步骤:

s1,获取软件升级文件包,其中,软件升级文件包包括:包头、包体和包尾。

s2,对包体中的数据进行重新封装。

根据本发明的一个实施例,对包体中的数据进行重新封装,包括:对包体进行md5加密封装;对md5加密封装后的包体进行aes加密封装;将aes加密封装后的摘要信息放入包头中,其中,摘要信息包括:md5的hash值、aes的数字签名信息、软件升级文件包的长度、公司信息、升级文件硬件设备信息、分割的文件包数量。

具体而言,为了为了防止原始的数据包不被修改,不易被潜在的对手窃取利用,采用md5密码封装和aes密码封装的方式对包体进行重新封装,其中,如图2所示,将加密封装后的摘要放入文件包头中,这个文件包头由f1,f2,…,fi这些关键信息组成。这些关键信息可以是md5的hash值、aes的数字签名信息、文件的长度、公司信息、升级文件硬件设备信息、后面切分的文件包数量等。同时,也可以在文件的结尾部分加上包尾,用来特定标识文件结束,这个包尾可以是特殊的字符串,也可以是安装一定的算法计算出来的数值。当然,文件包头和包尾由发布方根据自己需要来确定具体内容,并不限定其具体细节。

s3,按照预设大小对重新封装后的包体进行分割。其中,预设大小可根据实际情况进行标定,例如,预设大小为256字节,即按照256字节进行分割,分割成子包,包括:包1、包2、…、包n。

s4,对分割后的每个子包进行二次封装处理,并为每个子包加上子包头。

根据本发明的一个实施例,对分割后的每个子包进行二次封装处理,包括:采用crc校验的方式进行二次封装处理;将校验和存储在对应的子包头中,其中,子包头包括:子包大小、子包序列号、子包的校验和、子包的起始地址。

具体而言,为了可以在接收端进行纠错处理,二次封装处理可以是crc校验,并将校验和存入子包头中。如图2所示,这些子包头(h1,h2,…,hn)由子包的关键信息(s1,s2,…,sm)组成,这些关键信息可以是子包的大小,子包序列号,子包的crc校验和,还可以是子包的起始地址,子包在升级过程中存放的设备信息等,这些关键信息由用户来定。

s5,根据包头、每个子包头与其对应的子包和包尾获得封装后的软件升级文件包。

也就是说,将包头、子包头和其对应的子包、包尾组合在一起封装,即可得到封装好的软件升级文件包,然后将封装好的软件上传至服务器中,便于软件升级。

对应上述实施例的软件升级包封装方法,本发明还提出了一种软件升级包解封装方法。

图3为本发明实施例的软件升级包解封装方法的流程图。

如图3所示,本发明实施例的软件升级包解封装方法包括以下步骤:

s11,获取软件升级文件包,其中,软件升级文件包包括:包头、包体和包尾。

s21,对软件升级文件包的包头进行解析,以获取摘要信息。

s31,对每个子包进行解析,以获取子包头信息,其中,子包头信息包括:子包大小、子包序列号、子包的校验和、子包的起始地址。

s41,将每个子包对应的子包头删除,并根据子包数据获取新的软件升级文件包。

s51,对新的软件升级文件包进行aes解封装,以得到解封后的软件升级文件包。

根据本发明的一个实施例,上述的软件升级包解封装方法,还包括:根据包头中的md5的hash值对解封后的软件升级文件包进行校验,其中,当校验失败时,退出软件升级包解封装过程。

具体而言,对于升级包的解封装过程,就是封装的逆过程,就是将接收到的包还原成原始的升级数据包。具体地,如图4所示,首先解析包头,根据封装前定义的文件包头,获得相关的子项信息(f1,f2,…,fi),例如,md5hash值,aes数字签名信息,整个文件大小,后续子包的数量等。然后,找到子包位置,对每个子包进行有效性检查。从子包头(h1,h2,…,hn)中获取相关信息s1、s2、s3、…、sm,这些信息可以是子包序列号、操作地址、子包大小和crc校验和,并还原子包数据。需要说明的是,如果其中有一个子包信息有误,则整个解封装过程结束。接着,去掉上述步骤中的包头,将有效数据部分重新组成一个新的包。最后,对新包进行aes解封装,还原原始数据包,之后根据文件头中的md5hash值,进行整个文件的有效性检查。检测通过即可得到最终的升级数据包,不通过则解封装过程结束。

综上,首先获取软件升级文件包,并对包体中的数据进行重新封装;然后按照预设大小对重新封装后的包体进行分割,并对分割后的每个子包进行二次封装处理,并为每个子包加上子包头,最后根据包头、每个子包头与其对应的子包和包尾获得封装后的软件升级文件包。本发明的封装方法,通过对软件升级文件包进行再次封装,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

对应上述实施例的软件升级包封装方法,本发明还提出一种软件升级包封装装置。

图5为本发明实施例的软件升级包封装装置的方框示意图。

如图5所示,本发明实施例的软件升级包封装装置,可包括:第一获取模块110、第一封装模块120、分割模块130、第二封装模块140和第二获取模块150。

其中,第一获取模块110用于获取软件升级文件包,其中,软件升级文件包包括:包头、包体和包尾。第一封装模块120用于对包体中的数据进行重新封装。分割模块130用于按照预设大小对重新封装后的包体进行分割。第二封装模块140用于对分割后的每个子包进行二次封装处理,并为每个子包加上子包头。第二获取模块150用于根据包头、每个子包头与其对应的子包和包尾获得封装后的软件升级包。

根据本发明的一个实施例,第一封装模块120对包体中的数据进行重新封装,具体用于,对包体进行md5加密封装;对md5加密封装后的包体进行aes加密封装;将aes加密封装后的摘要信息放入包头中,其中,摘要信息包括:md5的hash值、aes的数字签名信息、软件升级文件包的长度、公司信息、升级文件硬件设备信息、分割的文件包数量。

根据本发明的一个实施例,第二封装模块130对分割后的每个子包进行二次封装处理,具体用于,采用crc校验的方式进行二次封装处理;将校验和存储在对应的子包头中,其中,子包头包括:子包大小、子包序列号、子包的校验和、子包的起始地址。

需要说明的是,本发明实施例的软件升级包封装装置中未披露的细节,请参照本发明实施例的软件升级包封装方法中所披露的细节,具体这里不再赘述。

对应上述实施例的软件升级包解封装方法,本发明还提出了一种软件升级包解封装装置。

图6为本发明实施例的软件升级包解封装装置的方框示意图。

如图6所示,本发明实施例的软件升级包解封装装置,可包括:第三获取模块210、解析模块220、第四获取模块230和解封模块240。

其中,第三获取模块210用于获取软件升级文件包,其中,软件升级文件包包括:包头、包体和包尾。解析模块220用于对软件升级文件包的包头进行解析,以获取摘要信息,并对每个子包进行解析,以获取子包头信息,其中,子包头信息包括:子包大小、子包序列号、子包的校验和、子包的起始地址。第四获取模块230用于将每个子包对应的子包头删除,并根据子包数据获取新的软件升级文件包。解封模块240用于对新的软件升级文件包进行aes解封装,以得到解封后的软件升级文件包。

根据本发明的一个实施例,上述的软件升级包解封装装置,还包括:校验模块,用于根据包头中的md5的hash值对解封后的软件升级文件包进行校验,其中,当校验失败时,退出软件升级包解封装过程。

需要说明的是,本发明实施例的软件升级包解封装装置中未披露的细节,请参照本发明实施例的软件升级包解封装方法中所披露的细节,具体这里不再赘述。

对应上述实施例,本发明还提出一种计算机设备。

本发明实施例的计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行该计算机程序时,可实现根据本发明上述实施例所述的软件升级包封装方法或者软件升级包解封装方法。

根据本发明实施例的计算机设备,处理器执行存储在存储器上的计算机程序时,在软件升级包装方法中,首先获取软件升级文件包,并对包体中的数据进行重新封装;然后按照预设大小对重新封装后的包体进行分割,并对分割后的每个子包进行二次封装处理,并为每个子包加上子包头,最后根据包头、每个子包头与其对应的子包和包尾获得封装后的软件升级文件包。本发明的封装方法,通过对软件升级文件包进行再次封装,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

根据本发明实施例的计算机设备,处理器执行存储在存储器上的计算机程序时,在软件升级包解封装方法中,首先获取软件升级文件包,并对软件升级文件包的包头进行解析,以获取摘要信息;然后对每个子包进行解析,以获取子包头信息,并将每个子包对应的子包头删除,并根据子包数据获取新的软件升级文件包,最后对新的软件升级文件包进行aes解封装,以得到解封后的软件升级文件包。从而通过对软件升级文件包进行再次封装,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

对应上述实施例,本发明还提出一种非临时性计算机可读存储介质。

本发明实施例的非临时性计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时可实现根据本发明上述实施例所述的软件升级包封装方法或者软件升级包解封装方法。

根据本发明实施例的非临时性计算机可读存储介质,处理器执行存储在其上的计算机程序时,在软件升级包装方法中,首先获取软件升级文件包,并对包体中的数据进行重新封装;然后按照预设大小对重新封装后的包体进行分割,并对分割后的每个子包进行二次封装处理,并为每个子包加上子包头,最后根据包头、每个子包头与其对应的子包和包尾获得封装后的软件升级文件包。本发明的封装方法,通过对软件升级文件包进行再次封装,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

根据本发明实施例的计算机设备,处理器执行存储在存储器上的计算机程序时,在软件升级包解封装方法中,首先获取软件升级文件包,并对软件升级文件包的包头进行解析,以获取摘要信息;然后对每个子包进行解析,以获取子包头信息,并将每个子包对应的子包头删除,并根据子包数据获取新的软件升级文件包,最后对新的软件升级文件包进行aes解封装,以得到解封后的软件升级文件包。从而通过对软件升级文件包进行再次封装,能够防止原始的数据包被修改,保证原始的数据包的安全性,不容易被窃取。

在本发明的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本发明中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。

在本发明中,除非另有明确的规定和限定,第一特征在第二特征“上”或“下”可以是第一和第二特征直接接触,或第一和第二特征通过中间媒介间接接触。而且,第一特征在第二特征“之上”、“上方”和“上面”可是第一特征在第二特征正上方或斜上方,或仅仅表示第一特征水平高度高于第二特征。第一特征在第二特征“之下”、“下方”和“下面”可以是第一特征在第二特征正下方或斜下方,或仅仅表示第一特征水平高度小于第二特征。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必针对相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1