加密程序的解密方法、装置、设备和计算机可读存储介质与流程

文档序号:21364450发布日期:2020-07-04 04:39阅读:196来源:国知局
加密程序的解密方法、装置、设备和计算机可读存储介质与流程

本发明涉及控制器技术领域,特别涉及一种加密程序的解密方法、装置、设备和计算机可读存储介质。



背景技术:

随着科技的发展,用户对产品(如缝纫机)的功能需求越来越多,这就导致产品中控制器(即处理器)所需运行的程序越来越复杂。一方面,研发人员往往不能将程序一次性做好,会存在一些问题,另一方面,针对特殊用户对程序需要进行特殊处理,使得程序往往需要进行更新。

现有技术中,产品中的程序更新过程由于更新程序并未加密,往往是研发人员将更新程序下载到烧录器中,再以快递的方式寄给用户进行产品中程序的更新,这样的更新过程既耗成本,也耗时,而且对更新程序也起不到保密的作用。

因此,如何能够提供一种加密程序的解密方法,使产品中的控制器可以自动对加密后更新程序进行解密,完成程序的更新,提高程序的保密性和更新效率,降低程序更新成本,实现急需解决的问题。



技术实现要素:

本发明的目的是提供一种加密程序的解密方法、装置、设备和计算机可读存储介质,使控制器可以自动对加密程序进行解密,提高程序的保密性和程序更新效率。

为解决上述技术问题,本发明提供一种加密程序的解密方法,包括:

获取加密程序文件;其中,所述加密程序文件为原始程序文件与密码数组经异或处理后得到的数据文件,所述密码数组为m行m列的数组,m为大于或等于1的正整数;

获取所述密码数组;

将所述加密程序文件与所述密码数组进行异或处理,得到所述原始程序文件的数据。

可选的,所述将所述加密程序文件与所述密码数组进行异或处理,得到所述原始程序文件的数据,包括:

按照所述加密程序文件的数据读取顺序和预设二维数组填充顺序,将读取到的m*m个数据组成加密二维数组;

将每个所述加密二维数组与所述密码数组进行异或,得到原始二维数组;

根据所述原始二维数组中的数据,获取所述原始程序文件的数据。

可选的,所述原始二维数组中的数据包括预设填充数据时,所述预设填充数据为0xff。

可选的,所述根据所述原始二维数组中的数据,获取所述原始程序文件的数据,包括:

判断最后一个所述原始二维数组中所述预设二维数组填充顺序的最后一位是否为预设填充数据;

若否,则利用全部所述原始二维数组中的数据组成所述原始程序文件的数据;

若是,则利用最后一个所述原始二维数组之前的所述原始二维数组中的数据和最后一个所述原始二维数组中的非填充数据,组成所述原始程序文件的数据;其中,所述非填充数据为最后一个所述原始二维数组中按所述预设二维数组填充顺序的第一位至最后一位之前第一个不为预设填充数据的数据位之间的数据。

可选的,所述获取加密程序文件之前,还包括:

获取所述原始程序文件和所述密码数组;

将所述原始程序文件与所述密码数组进行异或处理,得到所述加密程序文件。

可选的,所述原始程序文件为升级文件时,所述获取加密程序文件,包括:

上电启动后,检测是否与升级设备连接;

若是,则从所述升级设备接收所述加密程序文件;

对应的,所述将所述加密程序文件与所述密码数组进行异或处理,得到所述原始程序文件的数据之后,还包括:

利用所述原始程序文件的数据,更新所述存储器存储的目标程序文件。

本发明还提供了一种加密程序的解密装置,包括:

第一获取模块,用于获取加密程序文件;其中,所述加密程序文件为原始程序文件与密码数组经异或处理后得到的数据文件,所述密码数组为m行m列的数组,m为大于或等于1的正整数;

第二获取模块,用于获取所述密码数组;

解密模块,用于将所述加密程序文件与所述密码数组进行异或处理,得到所述原始程序文件的数据。

可选的,所述解密模块,包括:

读取子模块,用于按照所述加密程序文件的数据读取顺序和预设二维数组填充顺序,将读取到的m*m个数据组成加密二维数组;

异或子模块,用于将每个所述加密二维数组与所述密码数组进行异或,得到原始二维数组;

获取子模块,用于根据所述原始二维数组中的数据,获取所述原始程序文件的数据。

本发明还提供了一种加密程序的解密设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行所述计算机程序时实现如上述所述的加密程序的解密方法的步骤。

本发明还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述所述的加密程序的解密方法的步骤。

本发明所提供的一种加密程序的解密方法,包括:获取加密程序文件;其中,加密程序文件为原始程序文件与密码数组经异或处理后得到的数据文件,密码数组为m行m列的数组,m为大于或等于1的正整数;获取密码数组;将加密程序文件与密码数组进行异或处理,得到原始程序文件;

可见,本发明通过将加密程序文件与密码数组进行异或处理,得到原始程序文件的数据,使产品中的控制器可以自动对加密程序文件进行解密,得到未加密的原始程序文件的数据,使得研发人员可以将产品的更新程序加密后通过网络传输给用户,避免了更新程序的寄送过程,提高了程序的保密性和更新效率,降低了程序更新成本。此外,本发明还提供了一种加密程序的解密装置、设备和计算机可读存储介质,同样具有上述有益效果。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例所提供的一种加密程序的解密方法的流程图;

图2为本发明实施例所提供的另一种加密程序的解密方法的程序更新示意图;

图3为本发明实施例所提供的另一种加密程序的解密方法的程序更新过程的示意图;

图4为本发明实施例所提供的一种加密程序的解密装置的结构框图。

具体实施方式

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

请参考图1,图1为本发明实施例所提供的一种加密程序的解密方法的流程图。该方法可以包括:

步骤101:获取加密程序文件;其中,加密程序文件为原始程序文件与密码数组经异或处理后得到的数据文件,密码数组为m行m列的数组,m为大于或等于1的正整数。

可以理解的是,本步骤中的加密程序文件可以为原始程序文件与密码数组经异或处理后得到的数据文件,即利用密码数组对原始程序文件进行加密后得到的数据文件。也就是说,原始程序文件与加密程序文件均为数据文件。

具体的,对于原始程序文件与加密程序文件的具体数据文件类型,可以由设计人员根据实用场景和用户需求自行设置,如原始程序文件与加密程序文件可以为相同类型的数据文件,如均为bin文件(二进制文件);原始程序文件与加密程序文件也可以为不同类型的数据文件,只要如缝纫机的产品中的处理器(即控制器)可以通过对加密程序文件的解密得到原始程序文件中的数据,本实施例对此不做任何限制。

对应的,对于本步骤中处理器获取加密程序文件的具体方式,可以由设计人员自行设置,如处理器可以从连接的升级设备中获取加密程序文件,例如加密程序文件为升级文件时,如图2所示,缝纫机的处理器可以在上电后首先执行的为“供升级用的程序”代码,该代码会检测是否有升级设备接在控制器上;若没有,则直接跳转到应用程序中去执行应用程序;若有,则开始接收升级设备发送的加密程序文件,从而对加密程序文件进行解密得到原始程序文件的数据,即未加密的升级文件的数据,利用解密得到的数据对应用程序进行更新;也就是说,如图2和图3所示,加密程序文件为升级文件时,研发人员在pc机上用加密软件对升级文件(即原始程序文件)进行加密来获得加密后升级文件(即加密程序文件),然后可将加密后升级文件直接发给用户,使用户可以先将加密后升级文件用pc机下载到升级设备中,再通过升级设备将加密后升级文件以串口的形式发给处理器。处理器可以从连接的网络通讯设备中获取加密程序文件,例如缝纫机中设置与处理器连接的网络通讯设备时,处理器可以通过网络通讯设备直接从网络上下载加密程序文件。

需要说明的是,本实施例所提供的方法还可以包括利用密码数组对原始程序文件进行加密的过程,即本步骤之前还可以包括获取原始程序文件和密码数组;将原始程序文件与密码数组进行异或处理,得到加密程序文件的步骤。

对应的,对于上述将原始程序文件与密码数组进行异或处理,得到加密程序文件的具体方式,可以由设计人员根据实用场景和用户需求自行设置,如处理器可以按照原始程序文件的数据读取顺序和预设二维数组填充顺序,将读取到的m*m个数据组成原始二维数组,即原始二维数组为m行m列的数组,包含m*m个数据;再将每个原始二维数组与密码数组进行异或,得到各自对应的加密二维数组;从而利用加密二维数组中的数据生成加密程序文件。例如原始程序文件为十六进制的bin文件时,处理器可以依次读取原始程序文件中的16个数据(a1至a16)组成4行4列的原始二维数组将原始二维数组a与预设的4行4列的密码数组进行异或后得到可以得到对应的加密二维数组从而将加密二维数组a1中的数据存储到新的bin文件中得到加密程序文件;按照上述方法可以将原始程序的bin文件的所有数据依次读取16个字节(即1个字节为1个数据)与密码数组进行异或加密,加密后的数据依次写入新的bin文件中,最后不足16个字节的用预设填充数据(如0xff)进行填充,直到所有数据加密完成,最终会生成一个加密程序的bin文件。加密程序的bin文件中可以包括最后一个原始二维数组填充的预设填充数据加密后的数据,也可以不包括最后一个原始二维数组填充的预设填充数据加密后的数据。

具体的,处理器在运行加密软件时可以按照上述加密过程对原始程序文件进行加密,获得加密程序文件,加密软件可以是研发人员用visualstudio2017(一种开发工具套件系列产品)编写的一个软件程序。

其中,对于本步骤中m的具体数值,即密码数组、原始二维数组和加密二维数组的具体二维数组规格,可以由设计人员自行设置,只要保证密码数组、原始二维数组和加密二维数组均为m行m列的数组,即原始二维数组和加密二维数组均能与密码数组进行异或计算,本实施例对此不做任何限制。

步骤102:获取密码数组。

可以理解的是,本步骤的目的可以处理器获取用于对加密程序文件进行解密所需的密码数组,即对加密程序文件对应的原始程序文件进行异或加密时所使用的密码数组。具体的,本实施例并不限定处理器获取密码数组的具体方式,如可以直接从存储器(如flash)获取预先存储的密码数组。

具体的,本实施例中并不限定步骤101与步骤102的先后顺序,可以如本实施例所示先进行步骤101再进行步骤102;也可以先进行步骤102再进行步骤101,如处理器在上电启动后,检测到与升级设备连接时,可以先从存储器获取密码数组,再从升级设备读取加密程序文件;还可以步骤101与步骤102同时进行。

步骤103:将加密程序文件与密码数组进行异或处理,得到原始程序文件的数据。

可以理解的是,由于一个数与同一个数异或两次后结果并不改变,如0与1异或两次后结果还是0,即0与1第一次异或的结果为1,该异或结果1与1再次异或的结果为0;本步骤的目的可以为处理器利用密码数组对加密程序文件进行异或解密,得到加密程序文件在未加密时的原始程序文件的数据。

具体的,对于本步骤中将加密程序文件与密码数组进行异或处理的具体方式,即利用密码数组对加密程序文件进行异或解密的具体方式,可以采用与利用该密码数组对原始程序文件进行异或加密相对应的方式,如处理器可以按照加密程序文件的数据读取顺序和预设二维数组填充顺序,将读取到的m*m个数据组成加密二维数组,即m行m列的加密二维数组;将每个加密二维数组与密码数组进行异或,得到原始二维数组;根据原始二维数组中的数据,获取原始程序文件的数据。

例如处理器可以依次读取加密程序文件中的16个数据组成4行4列的加密二维数组将加密二维数组a1与预设的4行4列的密码数组进行异或后可以得到数组由于一个数与同一个数异或两次后结果并不改变,则数组即原始二维数组a,从而保证了解密后得到的数据和原始二维文件的数据一致。

对应的,对于上述根据原始二维数组中的数据,获取原始程序文件的数据的具体方式,可以由设计人员自行设置,如加密程序文件中包括原始程序文件加密过程中最后一个原始二维数组填充的预设填充数据加密后的数据,即加密程序文件的数据每次均可以刚好填充最后一个加密二维数组时,为了方便原始程序文件的数据的获取,本实施例中在加密时填充的预设填充数据可以为存储器中预设的擦除后数据,如0xff,以使处理器可以不管原始二维数组中的数据是否存在预设填充数据,均可以利用存储器的特性,直接利用全部原始二维数组中的数据组成原始程序文件的数据;加密时填充的预设填充数据不为存储器中预设的擦除后数据时,处理器可以判断解密最后一个加密二维数组得到的最后一个原始二维数组中预设二维数组填充顺序的最后一位是否为预设填充数据;若否,则可以说明该加密程序文件对应的原始程序文件在加密过程中最后一个原始二维数组不需要填充预设填充数据,能够利用全部原始二维数组中的数据组成原始程序文件的数据;若是,则可以说明该加密程序文件对应的原始程序文件在加密过程中最后一个原始二维数组填充了预设填充数据,能够利用最后一个原始二维数组之前的原始二维数组中的数据和最后一个原始二维数组中的非填充数据,组成原始程序文件;其中,非填充数据为最后一个原始二维数组中按预设二维数组填充顺序的第一位至最后一位之前第一个不为预设填充数据的数据位之间的数据。对应的,加密程序文件中不包括原始程序文件加密过程中最后一个原始二维数组填充的预设填充数据加密后的数据,即加密程序文件的数据最后可能不足填充最后一个加密二维数组时,处理器也可以可以在解密时利用预设填充数据进行填充,直到所有加密程序文件中所有数据数据均可以解密完成,得到原始二维数组的数据。

需要说明的是,本实施例中处理器获取的加密程序文件为包含更新程序对应的升级文件时,处理器可以在得到加密程序文件对应的原始程序文件的数据,即未加密的更新程序后,利用原始程序文件的数据更新存储器存储的目标程序文件,其中目标程序文件可以为需要利用原始程序文件的数据进行升级更新的应用程序文件。

对应的,对于上述利用原始程序文件的数据更新存储器存储的目标程序文件的具体方式,可以采用与现有技术中的程序更新升级方法相同或相似的方式实现,如可以直接将原始程序文件的数据写入到存储器替换目标程序文件,完成应用程序的刷新。

本实施例中,本发明实施例通过将加密程序文件与密码数组进行异或处理,得到原始程序文件的数据,使产品中的控制器可以自动对加密程序文件进行解密,得到未加密的原始程序文件的数据,使得研发人员可以将产品的更新程序加密后通过网络传输给用户,避免了更新程序的寄送过程,提高了程序的保密性和更新效率,降低了程序更新成本。

请参考图4,图4为本发明实施例所提供的一种加密程序的解密装置的结构框图。该装置可以包括:

第一获取模块10,用于获取加密程序文件;其中,加密程序文件为原始程序文件与密码数组经异或处理后得到的数据文件,密码数组为m行m列的数组,m为大于或等于1的正整数;

第二获取模块20,用于获取密码数组;

解密模块30,用于将加密程序文件与密码数组进行异或处理,得到原始程序文件的数据。

可选的,解密模块30,可以包括:

读取子模块,用于按照加密程序文件的数据读取顺序和预设二维数组填充顺序,将读取到的m*m个数据组成加密二维数组;

异或子模块,用于将每个加密二维数组与密码数组进行异或,得到原始二维数组;

获取子模块,用于根据原始二维数组中的数据,获取原始程序文件的数据。

可选的,原始二维数组中的数据包括预设填充数据时,预设填充数据为0xff。

可选的,获取子模块,可以包括:

判断单元,用于判断最后一个原始二维数组中预设二维数组填充顺序的最后一位是否为预设填充数据;

第一获取单元,用于若不为预设填充数据,则利用全部原始二维数组中的数据组成原始程序文件的数据;

第二获取单元,用于若为预设填充数据,则利用最后一个原始二维数组之前的原始二维数组中的数据和最后一个原始二维数组中的非填充数据,组成原始程序文件的数据;其中,非填充数据为最后一个原始二维数组中按预设二维数组填充顺序的第一位至最后一位之前第一个不为预设填充数据的数据位之间的数据。

可选的,该装置还可以包括:

第三获取模块,用于获取原始程序文件和密码数组;

加密模块,用于将原始程序文件与密码数组进行异或处理,得到加密程序文件。

可选的,原始程序文件为升级文件时,第一获取模块10,可以包括:

检测子模块,用于在上电启动后,检测是否与升级设备连接;

接收子模块,用于若与升级设备连接,则从升级设备接收加密程序文件;

对应的,该装置还可以包括:

更新模块,用于利用原始程序文件的数据,更新存储器存储的目标程序文件。

本实施例中,本发明实施例通过解密模块30将加密程序文件与密码数组进行异或处理,得到原始程序文件的数据,使产品中的控制器可以自动对加密程序文件进行解密,得到未加密的原始程序文件的数据,使得研发人员可以将产品的更新程序加密后通过网络传输给用户,避免了更新程序的寄送过程,提高了程序的保密性和更新效率,降低了程序更新成本。

本发明实施例还提供了一种加密程序的解密设备,包括:

存储器,用于存储计算机程序;

处理器,用于执行计算机程序时实现如上述实施例所提供的加密程序的解密方法的步骤。

其中,本实施例中的存储器至少包括一种类型的可读存储介质,该可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器在一些实施例中可以是解密设备(如缝纫机)的内部存储单元,例如缝纫机的闪存。存储器在另一些实施例中也可以是解密设备的外部存储设备,例如缝纫机上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigita,sd)卡,闪存卡(flashcard)等。进一步地,存储器还可以既包括解密设备的内部存储单元也包括外部存储设备。存储器不仅可以用于存储安装于解密设备的应用软件及各类数据,例如:执行加密程序的解密方法的程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

本实施例中的处理器在一些实施例中可以是中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器中存储的程序代码或处理数据,例如执行加密程序的解密方法的程序的代码等。

此外,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述实施例所提供的加密程序的解密方法的步骤。

其中,该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置、设备及计算机可读存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

以上对本发明所提供的一种加密程序的解密方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

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