CN115688134A - 一种程序文件加密和解密方法、装置及电子设备 - Google Patents
一种程序文件加密和解密方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115688134A CN115688134A CN202211341913.0A CN202211341913A CN115688134A CN 115688134 A CN115688134 A CN 115688134A CN 202211341913 A CN202211341913 A CN 202211341913A CN 115688134 A CN115688134 A CN 115688134A
- Authority
- CN
- China
- Prior art keywords
- file
- program
- encrypted
- encryption
- decrypted
- 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.)
- Pending
Links
Images
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种程序文件加密和解密方法、装置及电子设备,加密方法通过获取待加密程序包中需要加密的目标程序、加密配置文件和目标程序对应的许可申请信息,根据加密配置文件确定目标程序的加密方式,根据加密方式的不同,向认证中心发送相应的目标数据;接收认证中心返回的目标程序对应的密钥;获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,根据第一加密文件和第二加密文件,生成对应的解密程序;根据预设方法生成解密程序对应的类库文件以及类库文件对应的探针程序;将第一加密文件、第二加密文件、类库文件以及探针程序进行关联,增加获取程序文件中源代码文件的难度。
Description
技术领域
本发明涉及程序安全处理技术领域,具体涉及一种程序文件加密和解密方法、装置及电子设备。
背景技术
目前,在互联网和传统服务等领域中,大量使用编程语言进行开发,很多编程语言都具有着跨平台、使用方便等各种优秀的特性,例如Java编程语言。Java编程语言可以一次编译,随处运行,只要环境中安装了Java虚拟机(JVM,Java Virtual Machine)就可以运行Java程序。Java是解释型语言,编译器会把Java代码变成中间代码,然后在Java虚拟机上解析执行。由于中间代码与平台无关,因此,Java编程语言可以很好地跨平台执行,具有良好的可移植性。但是中间代码中包含了源代码的信息,导致很容易通过反编译得到源代码。
为了提高源代码的安全性和防止源代码泄露,通常的主要措施会将编程语言代码做混淆,混淆代码就是将代码转换成难以读懂的样式,增加破解难度。但混淆之后的代码经过一系列的逻辑鉴别,也会还原为原有代码逻辑,进而得出类源代码,例如对混淆编译后的class文件进行加密处理,通过自定义类加载器进行解密运行程序。但由于自定义的类加载器自身不会被加密,其中的解密逻辑和方法容易暴露,导致经过人工识别后会解密出混淆之前的代码。如果需要对代码进行运行控制,只加密和混淆虽然能够防止一部分场景的代码泄露,无法实现对程序的启动与运行权限的掌控。
发明内容
因此,本发明要解决的技术问题在于克服现有存在的容易泄露源代码且无法对程序的启动与运行权限掌控的缺陷,从而提供一种程序文件加密和解密方法、装置及电子设备。
根据第一方面,本发明实施例公开了一种程序文件加密方法,获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息;根据所述加密配置文件确定所述目标程序的加密方式,所述加密方式包括本地加密和远程加密;根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,所述目标数据包括许可申请信息;接收所述认证中心返回的所述目标程序对应的密钥;获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件;根据所述第一加密文件和所述第二加密文件,生成对应的解密程序;根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序;将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联。
可选地,所述根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,包括:当所述目标程序的加密方式为本地加密,向所述认证中心发送许可申请信息,使得所述认证中心根据所述许可申请信息生成所述目标程序对应的许可证信息以及本地加密和解密所需的密钥;
所述获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,包括:利用所述密钥对所述目标程序进行加密得到第一加密文件;利用所述密钥对所述许可证信息进行加密得到第二加密文件。
可选地,所述根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,包括:当所述目标程序的加密方式为远程加密,向所述认证中心发送所述许可申请信息以及所述目标程序,使得所述认证中心根据所述许可申请信息生成所述目标程序对应的许可证信息以及利用密钥对所述目标程序进行加密得到第一加密文件、利用所述密钥对所述许可证信息进行加密得到第二加密文件;
所述获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,包括:接收所述认证中心返回的第一加密文件和所述第二加密文件。
可选地,所述获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件之后,所述方法还包括:利用所述第一加密文件对所述包含有目标程序的待加密程序包中的目标程序进行替换。
可选地,所述根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序之后,所述方法还包括:对所述类库文件进行加固。
可选地,所述方法还包括:当接收到所述目标程序对应的新的许可申请信息,将所述新的许可申请信息发送认证中心,使得所述认证中心在判定所述新的许可申请信息中包含的使用期限权限出现延长且所述新的许可申请信息满足续约条件时,重新生成所述目标程序对应的许可证信息。
根据第二方面,本发明实施例还公开了一种程序文件解密方法,包括:当监测到待解密文件对应的目标程序的运行请求时,控制所述待解密文件对应的探针程序启动运行,所述待解密文件通过如第一方面或第一方面任一可选实施方式所述的程序文件加密方法得到;根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密。
可选地,根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密,包括:利用所述类库文件对读取到的所述待解密文件对应的待解密许可证信息进行解密,得到第一解密文件;根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内;当所述待解密文件的许可证在免认证周期内,则执行对待解密文件的解密操作。
可选地,根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内之后,所述方法还包括:当所述待解密文件的许可证不在免认证周期内,则请求认证中心对所述待解密文件的许可证信息进行验证;接收所述认证中心返回的验证结果;当验证结果为所述待解密文件的许可证未过期,则更新所述待解密文件的许可信息,并执行对待解密文件的解密操作。
根据第三方面,本发明实施例还公开了一种程序文件加密装置,包括:第一获取模块,用于获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息;第一确定模块,用于根据所述加密配置文件确定所述目标程序的加密方式,所述加密方式包括本地加密和远程加密;第一发送模块,用于根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,所述目标数据包括许可申请信息;接收模块,用于接收所述认证中心返回的所述目标程序对应的密钥;第二获取模块,用于获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件;第二确定模块,用于根据所述第一加密文件和所述第二加密文件,生成对应的解密程序;第三确定模块,用于根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序;关联模块,用于将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联。
根据第四方面,本发明实施例还公开了一种程序文件解密装置,包括:调用模块,用于当监测到待解密文件对应的目标程序的运行请求时,控制所述待解密文件对应的探针程序启动运行,所述待解密文件通过如第一方面或第一方面任一可选实施方式所述的程序文件加密方法得到;解密模块,用于根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密。
根据第五方面,本发明实施例还公开了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如第一方面或第一方面任一可选实施方式所述的程序文件加密方法的步骤,或执行如第二方面或第二方面任一可选实施方式所述的程序文件解密方法的步骤。
根据第六方面,本发明实施方式还公开了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第一方面或第一方面任一可选实施方式所述的程序文件加密方法的步骤,或实现如第二方面或第二方面任一可选实施方式所述的程序文件解密方法的步骤。
本发明技术方案,具有如下优点:
本发明提供的程序文件加密方法/装置,通过获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息,根据加密配置文件确定目标程序的加密方式,根据加密方式的不同,向认证中心发送相应的目标数据,使得认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,接收认证中心返回的目标程序对应的密钥;获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,根据第一加密文件和第二加密文件,生成对应的解密程序;根据预设方法生成解密程序对应的类库文件以及类库文件对应的探针程序;将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联,增加获取程序文件中源代码文件的难度,从而提高对程序源代码的保护力度,同时,对程序文件关联对应的许可证信息,可以灵活地更新和修改所控制程序的执行寿命,便于后续根据对应的许可证信息对程序的启动和运行进行控制,有效地控制了程序泄露后带来的负面影响。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中程序文件加密方法的一个具体示例的流程图;
图2为本发明实施例中程序文件解密方法的一个具体示例的流程图;
图3为本发明实施例中程序文件加密装置的一个具体示例的原理框图;
图4为本发明实施例中程序文件解密装置的一个具体示例的原理框图;
图5为本发明实施例中电子设备的一个具体示例图。
具体实施方式
下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。
在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,还可以是两个元件内部的连通,可以是无线连接,也可以是有线连接。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
此外,下面所描述的本发明不同实施方式中所涉及的技术特征只要彼此之间未构成冲突就可以相互结合。
本发明实施例公开了一种程序文件加密方法,本申请实施例中,程序加密方法可以应用于加密插件,该加密插件可以是实际开发的软件,也可以其他多种方式存在,例如可执行程序、maven插件等。如图1所示,该方法包括如下步骤:
步骤101,获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息。
示例性地,待加密程序包可以是任一装有目标程序的文件包,目标程序可以是待加密程序包中任一需要加密的程序。本申请实施例中,目标程序可以是从需要加密的程序(Java编程语言)编译后得到的class文件中提取到的关键信息,class文件是可以运行在任何支持Java虚拟机的硬件平台和操作系统上的二进制文件,待加密程序包可以是需要加密的程序编译后的class文件的集合。加密配置文件可以是包含目标程序的加密方式和加密内容的配置文件,许可申请信息可以是目标程序的许可启动权限的信息。
步骤102,根据所述加密配置文件确定所述目标程序的加密方式,所述加密方式包括本地加密和远程加密。
示例性地,本地加密可以在加密插件中的加密模块实现对目标程序的加密操作,远程加密可以是通过预设的加密平台对目标程序进行加密操作。本申请实施例中,预设的加密平台可以包括但不限于认证中心。
步骤103,根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,所述目标数据包括许可申请信息。
示例性地,认证中心可以是一个许可管理和授权的平台。本申请实施例中,当加密方式为本地加密,则向认证中心发送的目标数据可以是对应的许可申请信息,认证中心会采用预设的加密方法生成许可申请信息对应的密钥和对应的许可证信息,许可证信息内可以包含目标程序基本信息、授权日期、授权终止日期、免认证日期等信息。预设的加密方法可以包括但不限于对称加密算法和非对称加密算法。本申请实施例中,可以采用非对称加密算法生成许可申请信息对应的公、私钥对。当加密方式为远程加密,目标数据可以是目标程序和许可申请信息,认证中心会根据生成的密钥对目标程序和许可申请信息进行加密。同时,认证中心对公钥、私钥以及许可申请信息的唯一性作为主键保存到数据库(或缓存)。本申请实施例中,加密插件和认证中心之间的可以通过加密链路进行信息传输,从而预防传输信息的泄露。
本申请实施例中,认证中心接收到加密插件发送的目标程序的许可申请信息时,读取目标程序对应的用户信息;将目标程序对应的用户信息与预设具有使用权限的用户信息进行比对,判断目标程序对应的用户是否具有使用权限;当目标程序对应的用户具有使用权限,则执行后续的密钥对和许可证信息的生成操作,当目标程序对应的用户没有使用权限,则拒绝为其服务。
步骤104,接收所述认证中心返回的所述目标程序对应的密钥。
示例性地,本申请实施例中,认证中心预设的加密方法可以是非称加密算法,当加密方式为本地加密时,加密插件会接收认证中心返回的公、私钥对,以使得加密插件在后续根据私钥对目标程序和对应的许可证信息进行加密,并根据公钥生成对应的解密程序;当加密方式为远程加密时,加密插件会接收到认证中心返回的公钥,以用于后续加密插件利用公钥生成对应的解密程序。
步骤105,获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件。
示例性地,本申请实施例中,当加密方式为本地加密,则根据认证中心返回的私钥分别对目标程序和对应的许可证信息进行加密,得到第一加密文件和第二加密文件;当加密方式为远程加密,则直接从认证中心接收第一加密文件和第二加密文件。
步骤106,根据所述第一加密文件和所述第二加密文件,生成对应的解密程序。
示例性地,本申请实施例中,第一加密文件和第二加密文件对应的解密程序中可以包括但不限于对应的公钥、与认证中心的通信协议以及解密逻辑方法的相关内容,具体可以根据公钥编写第一加密文件和第二加密文件的解密程序,例如,解密程序的执行逻辑可以为先对第二加密文件进行解密得到许可证信息,对许可证信息判断该是否具有解密权限,当具有解密权限则对第一加密文件进行解密。为了进一步提高反编译破解难度,提高安全性,可以采用C/C++语言编写解密程序中的解密的逻辑,采用C、C++语言编译后不可还原成源代码,具有天然的防反编译的特性。
步骤107,根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序。
示例性地,类库文件可以包括但不限于windows的dll后缀文件或者linux的so后缀文件等。本申请实施例中,类库文件可以是linux的so后缀文件,so文件称为共享库,其依赖于开发平台,无法单独运行使用,具体可以通过JPDA(java平台调试体系)架构的JVMTI(JVM Tool Interface)实现一个C、C++语言编写的JVMTIAgent以类库的方式存在,JPDA是一种多层调试架构,它允许工具开发人员轻松创建调试器应用程序,这些应用程序可以跨平台、虚拟机(VM)实现和JDK版本可移植地运行。探针程序(Javaagent程序)用于捆绑类库文件以供程序运行时自动加载类库文件,根据JVMTI协议,在程序运行后会自动回调类库中的回调方法,进而激活类库中事先定义好的解密和控制管理流程,进行正常的解密逻辑运行。
步骤108,将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联。示例性地,将第一加密文件、第二加密文件、类库文件以及探针程序进行关联,便于后续的解密操作。
本发明提供的程序文件加密方法,通过获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息,根据加密配置文件确定目标程序的加密方式,根据加密方式的不同,向认证中心发送相应的目标数据,使得认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,接收认证中心返回的目标程序对应的密钥;获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,根据第一加密文件和第二加密文件,生成对应的解密程序;根据预设方法生成解密程序对应的类库文件以及类库文件对应的探针程序;将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联,增加了获取程序文件中源代码文件的难度,从而提高对程序代码的保护力度,同时,对程序文件关联对应的许可证信息,可以灵活地更新和修改所控制程序的执行寿命,便于后续根据对应的许可证信息对程序的启动和运行进行控制,有效地控制了程序泄露后带来的负面影响。
通常在对Java程序进行加密的时候,开发者需要编写类加载器进行类的解密等操作,对开发人员并不够友好。使用申请实施中的程序文件加密方法,不需要在编写源码时考虑程序保护加密和程序控制的问题,只需要配置好相应的配置文件,并引入加密插件就可以正常对Java程序进行加密,对开发人员的影响极小。
作为本发明一个可选实施方式,上述步骤103,包括:当所述目标程序的加密方式为本地加密,向所述认证中心发送许可申请信息,使得所述认证中心根据所述许可申请信息生成所述目标程序对应的许可证信息以及本地加密和解密所需的密钥。示例性地,本申请实施例中,当加密方式为本地加密,加密插件将目标程序的许可申请信息发送到认证中心,认证中心会根据接收到的许可申请信息生成对应的许可证信息和公、私钥对,接着认证中心会将许可证信息和公钥、私钥对通过加密链路发送到加密插件。
上述步骤105,包括:利用所述密钥对所述目标程序进行加密得到第一加密文件;利用所述密钥对所述许可证信息进行加密得到第二加密文件。示例性地,本申请实施例中,加密插件在接收到认证中心发送的许可证信息和公、私钥对时,利用私钥对目标程序进行加密得到第一加密文件,利用私钥对许可证信息进行加密,得到第二加密文件。
作为本发明一个可选实施方式,上述步骤103,包括:当所述目标程序的加密方式为远程加密,向所述认证中心发送所述许可申请信息以及所述目标程序,使得所述认证中心根据所述许可申请信息生成所述目标程序对应的许可证信息以及利用密钥对所述目标程序进行加密得到第一加密文件、利用所述密钥对所述许可证信息进行加密得到第二加密文件。示例性地,本申请实施例中,当加密方式为远程加密,则认证中心会根据私钥对目标程序进行加密,得到第一加密文件,根据私钥对许可证信息进行加密,得到第二加密文件,并将第一加密文件和第二加密文件发送到加密插件。
上述步骤105,包括:接收所述认证中心返回的第一加密文件和所述第二加密文件。示例性地,加密插件会接收认证中心返回的第一加密文件和第二加密文件。
作为本发明一个可选实施方式,上述步骤105之后,所述方法还包括:利用所述第一加密文件对所述包含有目标程序的待加密程序包中的目标程序进行替换。示例性地,利用第一加密文件将待加密程序包中的目标程序进行替换,便于保护目标程序的安全。
作为本发明一个可选实施方式,上述步骤107之后,所述方法还包括:对所述类库文件进行加固。示例性地,本申请实施例中,对类库文件进行加固、加壳,可以极大提升类库文件被破解的难度。
作为本发明一个可选实施方式,所述方法还包括:当接收到所述目标程序对应的新的许可申请信息,将所述新的许可申请信息发送认证中心,使得所述认证中心在判定所述新的许可申请信息中包含的使用期限权限出现延长且所述新的许可申请信息满足续约条件时,重新生成所述目标程序对应的许可证信息。
示例性地,当加密插件在接收到目标程序对应的新的许可申请信息时,可以根据新的许可申请信息判断是否需要进行续约,当需要续约时,将新的许可申请信息发送到认证中心,当认证中心确定新的许可申请信息包含的使用期限权限出现延长且所述新的许可申请信息满足续约条件,则根据许可申请信息重新生成目标程序对应的新许可证信息。认证中心会利用对应的私钥对新许可证信息进行加密,并将加密后的新许可证信息发送到加密插件。加密插件在接收到该加密后的新许可证信息时,则替换原来的许可证信息(第二加密文件)。后续在进行对目标程序的解密操作时,将会利用新许可证信息对该目标程序进行解密。
本发明实施例公开了一种程序文件解密方法,可用于解密插件,如图2所示,该方法包括如下步骤:
步骤201,当监测到待解密文件对应的目标程序的运行请求时,控制所述待解密文件对应的探针程序启动运行,所述待解密文件通过如上述实施例所述的程序文件加密方法得到。
示例性地,本申请实施例中,当待解密文件对应的目标程序需要运行时,待解密文件对应的探针程序会自动运行,加载对应的解密类库,例如,当需要运行一个程序A时,程序A对应的探针程序随之自动运行,加载对应的解密类库,解密类库会接收到程序A对应的待解密文件a的解密请求,可以实现对待解密文件a的解密。
步骤202,根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密。
示例性地,探针程序自动加载本地类库中对应类库文件,类库文件初始化后会自动对待解密文件进行解密。本申请实施例中,对应的类库文件在执行对待解密文件的解密操作时,可以根据待解密文件对应的许可证信息判断是否对待解密文件进行解密,具体可以根据许可证信息中包含的授权日期、授权终止日期、免认证日期等信息判断是否对带解密文件进行解密,有效地控制了程序泄露后带来的负面影响。
本发明提供的程序文件解密方法,当监测到待解密文件对应的目标程序的运行请求时,对应的探针程序启动运行,加载对应的类库文件,实现对待解密文件的解密,提高对程序源代码的保护力度,同时,对应的类库文件执行对待解密文件的解密操作,有效地控制了程序泄露后带来的负面影响。
作为本发明一个可选实施方式,上述步骤202,包括:利用所述类库文件对读取到的所述待解密文件对应的待解密许可证信息进行解密,得到第一解密文件。示例性地,类库文件执行时会先对待解密文件对应的待解密许可证信息进行解密,得到解密后的许可证信息。
根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内;当所述待解密文件的许可证在免认证周期内,则执行对待解密文件的解密操作。示例性地,当根据第一解密文件中的信息确定待解密文件在免认证周期内,说明当前许可允许执行程序,类库文件对应的逻辑通过,可继续执行对待解密文件的解密操作。
作为本发明一个可选实施方式,根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内之后,所述方法还包括:当所述待解密文件的许可证不在免认证周期内,则请求认证中心对所述待解密文件的许可证信息进行验证;接收所述认证中心返回的验证结果;当验证结果为所述待解密文件的许可证未过期,则更新所述待解密文件的许可信息,并执行对待解密文件的解密操作。
示例性地,当待解密文件不在免认证周期内,则需要访问认证中心拉取新的许可,更新许可后才可以执行对待解密文件的解密程序。当认证中心判定待解密文件的许可证已过期,则认证中心不会再下发新的许可证,待解密文件也不能解密,程序结束,达到了控制程序启动权限的目的。
本发明实施例还公开了一种程序文件加密装置,如图3所示,该装置包括:第一获取模块301,用于获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息;第一确定模块302,用于根据所述加密配置文件确定所述目标程序的加密方式,所述加密方式包括本地加密和远程加密;第一发送模块303,用于根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,所述目标数据包括许可申请信息;接收模块304,用于接收所述认证中心返回的所述目标程序对应的密钥;第二获取模块305,用于获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件;第二确定模块306,用于根据所述第一加密文件和所述第二加密文件,生成对应的解密程序;第三确定模块307,用于根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序;关联模块308,用于将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联。
本发明提供的程序文件加密装置,增加了获取程序文件中源代码文件的难度,从而提高对程序代码的保护力度,同时,对程序文件关联对应的许可证信息,可以灵活地更新和修改所控制程序的执行寿命,便于后续根据对应的许可证信息对程序的启动和运行进行控制,有效地控制了程序泄露后带来的负面影响。
作为本发明一个可选实施方式,所述第一发送模块,包括:第一发送子模块,用于当所述待加密程序的加密方式为本地加密,向所述认证中心发送许可申请信息,使得所述认证中心根据所述许可申请信息生成所述待加密程序对应的许可证信息以及本地加密和解密所需的密钥;
所述第二获取模块,包括:确定子模块,用于利用所述密钥对所述目标程序进行加密得到第一加密文件;加密子模块,用于利用所述密钥对所述许可证信息进行加密得到第二加密文件。
作为本发明一个可选实施方式,所述第一发送模块,包括:第二发送子模块,用于当所述待加密程序的加密方式为远程加密,向所述认证中心发送所述许可申请信息以及所述目标程序,使得所述认证中心根据所述许可申请信息生成所述待加密程序对应的许可证信息以及利用密钥对所述目标程序进行加密得到第一加密文件、利用所述密钥对所述许可证信息进行加密得到第二加密文件;
所述第二获取模块,包括:接收子模块,用于接收所述认证中心返回的第一加密文件和所述第二加密文件。
作为本发明一个可选实施方式,所述装置还包括:替换模块,用于利用所述第一加密文件对所述包含有目标程序的待加密程序包中的目标程序进行替换。
作为本发明一个可选实施方式,所述装置还包括:加固模块,用于对所述类库文件进行加固。
作为本发明一个可选实施方式,所述装置还包括:第二发送模块,用于当接收到所述目标程序对应的新的许可申请信息,将所述新的许可申请信息发送认证中心,使得所述认证中心在判定所述新的许可申请信息中包含的使用期限权限出现延长且所述新的许可申请信息满足续约条件时,重新生成所述目标程序对应的许可证信息。
本发明实施例还公开了一种程序文件解密装置,如图4所示,该装置包括:调用模块501,用于当监测到待解密文件对应的目标程序的运行请求时,控制所述待解密文件对应的探针程序启动运行,所述待解密文件通过如上述实施例中所述的程序文件加密方法得到;解密模块502,用于根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密。
发明提供的程序文件解密装置,当监测到待解密文件对应的目标程序的运行请求时,对应的探针程序启动运行,加载对应的类库文件,实现对待解密文件的解密,提高对程序源代码的保护力度,同时,对应的类库文件再执行对待解密文件的解密操作时,可以根据待解密文件对应的许可证信息判断是否对待解密文件进行解密,有效地控制了程序泄露后带来的负面影响。
作为本发明一个可选实施方式,所述解密模块,包括:第一解密子模块,用于利用所述类库文件中读取所述待解密文件对应的待解密许可证信息进行解密,得到第一解密文件;判断子模块,用于根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内;第二解密子模块,用于当所述待解密文件的许可证在免认证周期内,则执行对待解密文件的解密操作。
作为本发明一个可选实施方式,所述装置还包括:请求验证模块,用于当所述待解密文件的许可证不在免认证周期内,则请求认证中心对所述待解密文件的许可证信息进行验证;验证结果接收模块,用于接收所述认证中心返回的验证结果;更新模块,用于当验证结果为所述待解密文件的许可证未过期,则更新所述待解密文件的许可信息,并执行对待解密文件的解密操作。
本发明实施例还提供了一种电子设备,如图5所示,该电子设备可以包括处理器401和存储器402,其中处理器401和存储器402可以通过总线或者其他方式连接,图5中以通过总线连接为例。
处理器401可以为中央处理器(Central Processing Unit,CPU)。处理器401还可以为其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等芯片,或者上述各类芯片的组合。
存储器402作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本发明实施例中的程序文件加密方法或程序文件解密方法对应的程序指令/模块。处理器401通过运行存储在存储器402中的非暂态软件程序、指令以及模块,从而执行处理器的各种功能应用以及数据处理,即实现上述方法实施例中的程序文件加密方法,或实现上述方法实施例中的程序文件解密方法。
存储器402可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储处理器401所创建的数据等。此外,存储器402可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施例中,存储器402可选包括相对于处理器401远程设置的存储器,这些远程存储器可以通过网络连接至处理器401。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
所述一个或者多个模块存储在所述存储器402中,当被所述处理器401执行时,执行如图1所示实施例中的程序文件加密方法,或执行如图2所示实施例中的程序文件解密方法。
上述电子设备具体细节可以对应参阅图1或图2所示的实施例中对应的相关描述和效果进行理解,此处不再赘述。
本领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)、随机存储记忆体(RandomAccessMemory,RAM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,缩写:HDD)或固态硬盘(Solid-State Drive,SSD)等;所述存储介质还可以包括上述种类的存储器的组合。
虽然结合附图描述了本发明的实施例,但是本领域技术人员可以在不脱离本发明的精神和范围的情况下作出各种修改和变型,这样的修改和变型均落入由所附权利要求所限定的范围之内。
Claims (13)
1.一种程序文件加密方法,其特征在于,包括:
获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息;
根据所述加密配置文件确定所述目标程序的加密方式,所述加密方式包括本地加密和远程加密;
根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,所述目标数据包括许可申请信息;
接收所述认证中心返回的所述目标程序对应的密钥;
获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件;
根据所述第一加密文件和所述第二加密文件,生成对应的解密程序;
根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序;
将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联。
2.根据权利要求1所述的方法,其特征在于,所述根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,包括:
当所述目标程序的加密方式为本地加密,向所述认证中心发送许可申请信息,使得所述认证中心根据所述许可申请信息生成所述目标程序对应的许可证信息以及本地加密和解密所需的密钥;
所述获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,包括:
利用所述密钥对所述目标程序进行加密得到第一加密文件;
利用所述密钥对所述许可证信息进行加密得到第二加密文件。
3.根据权利要求1所述的方法,其特征在于,所述根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,包括:
当所述目标程序的加密方式为远程加密,向所述认证中心发送所述许可申请信息以及所述目标程序,使得所述认证中心根据所述许可申请信息生成所述目标程序对应的许可证信息以及利用密钥对所述目标程序进行加密得到第一加密文件、利用所述密钥对所述许可证信息进行加密得到第二加密文件;
所述获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件,包括:
接收所述认证中心返回的第一加密文件和所述第二加密文件。
4.根据权利要求1所述的方法,其特征在于,所述获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件之后,所述方法还包括:
利用所述第一加密文件对所述包含有目标程序的待加密程序包中的目标程序进行替换。
5.根据权利要求1所述的方法,其特征在于,所述根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序之后,所述方法还包括:
对所述类库文件进行加固。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到所述目标程序对应的新的许可申请信息,将所述新的许可申请信息发送认证中心,使得所述认证中心在判定所述新的许可申请信息中包含的使用期限权限出现延长且所述新的许可申请信息满足续约条件时,重新生成所述目标程序对应的许可证信息。
7.一种程序文件解密方法,其特征在于,包括:
当监测到待解密文件对应的目标程序的运行请求时,控制所述待解密文件对应的探针程序启动运行,所述待解密文件通过如权利要求1-6任一项所述的程序文件加密方法得到;
根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密。
8.根据权利要求7所述的方法,其特征在于,根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密,包括:
利用所述类库文件对读取到的所述待解密文件对应的待解密许可证信息进行解密,得到第一解密文件;
根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内;
当所述待解密文件的许可证在免认证周期内,则执行对待解密文件的解密操作。
9.根据权利要求8所述的方法,其特征在于,根据所述第一解密文件判断所述待解密文件的许可证是否在免认证周期内之后,所述方法还包括:
当所述待解密文件的许可证不在免认证周期内,则请求认证中心对所述待解密文件的许可证信息进行验证;
接收所述认证中心返回的验证结果;
当验证结果为所述待解密文件的许可证未过期,则更新所述待解密文件的许可信息,并执行对待解密文件的解密操作。
10.一种程序文件加密装置,其特征在于,包括:
第一获取模块,用于获取待加密程序包中需要加密的目标程序、加密配置文件和所述目标程序对应的许可申请信息;
第一确定模块,用于根据所述加密配置文件确定所述目标程序的加密方式,所述加密方式包括本地加密和远程加密;
第一发送模块,用于根据加密方式的不同,向认证中心发送相应的目标数据,使得所述认证中心根据所述目标数据生成所述目标程序对应的许可证信息以及加密和解密所需的密钥,所述目标数据包括许可申请信息;
接收模块,用于接收所述认证中心返回的所述目标程序对应的密钥;
第二获取模块,用于获取包含有加密后的目标程序的第一加密文件以及包含对应的许可证信息的第二加密文件;
第二确定模块,用于根据所述第一加密文件和所述第二加密文件,生成对应的解密程序;
第三确定模块,用于根据预设方法生成所述解密程序对应的类库文件以及所述类库文件对应的探针程序;
关联模块,用于将所述第一加密文件、第二加密文件、所述类库文件以及所述探针程序进行关联。
11.一种程序文件解密装置,其特征在于,包括:
调用模块,用于当监测到待解密文件对应的目标程序的运行请求时,控制所述待解密文件对应的探针程序启动运行,所述待解密文件通过如权利要求1-6任一项所述的程序文件加密方法得到;
解密模块,用于根据所述待解密文件对应的探针程序加载对应的类库文件,对所述待解密文件进行解密。
12.一种电子设备,其特征在于,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器执行如权利要求1-6任一所述的程序文件加密方法的步骤,或执行如权利要求7-9任一项所述的程序文件解密方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-6中任一项所述的程序文件加密方法的步骤,或实现如权利要求7-9任一项所述的程序文件解密方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211341913.0A CN115688134A (zh) | 2022-10-28 | 2022-10-28 | 一种程序文件加密和解密方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211341913.0A CN115688134A (zh) | 2022-10-28 | 2022-10-28 | 一种程序文件加密和解密方法、装置及电子设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115688134A true CN115688134A (zh) | 2023-02-03 |
Family
ID=85045822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211341913.0A Pending CN115688134A (zh) | 2022-10-28 | 2022-10-28 | 一种程序文件加密和解密方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115688134A (zh) |
-
2022
- 2022-10-28 CN CN202211341913.0A patent/CN115688134A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109214168B (zh) | 固件升级方法及装置 | |
US11416605B2 (en) | Trusted execution environment instances licenses management | |
JP6067449B2 (ja) | 情報処理装置、情報処理プログラム | |
CN102171704B (zh) | 用硬件加密存储设备进行外部加密和恢复管理 | |
JP5178341B2 (ja) | オプショナルなコンポーネントを伴うセキュアブートの方法 | |
US20090307783A1 (en) | Data processing device, method, program, integrated circuit, and program generating device | |
US20150121478A1 (en) | Permission Management Method, Apparatus, and Terminal | |
US20110289294A1 (en) | Information processing apparatus | |
CN110333868B (zh) | 用于生成子应用的安装包的方法和系统 | |
US8392724B2 (en) | Information terminal, security device, data protection method, and data protection program | |
CN101300583A (zh) | 用于可信赖移动电话的简单可伸缩和可配置安全启动 | |
US20170109546A1 (en) | Securing of the loading of data into a nonvolatile memory of a secure element | |
KR101509585B1 (ko) | 모바일 애플리케이션의 위변조 방지 장치, 사용자 디바이스, 방법 및 시스템 | |
US11704442B2 (en) | Instance handling of a trusted execution environment | |
US8918653B2 (en) | Protection of interpreted source code in virtual appliances | |
CN111159712B (zh) | 检测方法、设备及存储介质 | |
CN107766061A (zh) | 一种安卓应用程序的安装方法和安装系统 | |
CN115688134A (zh) | 一种程序文件加密和解密方法、装置及电子设备 | |
CN111465009B (zh) | 检测移动应用的网络接口请求的方法及相关装置 | |
CN115129361B (zh) | 一种Java应用程序的安全加固方法及系统 | |
CN114297679B (zh) | 一种镜像加密传输与升级的方法 | |
CN110365654B (zh) | 数据传输控制方法、装置、电子设备和存储介质 | |
US20220400004A1 (en) | Generating keys | |
CN115437673A (zh) | 车载mcu升级的方法、车载mcu升级系统与服务器组 | |
CN114154164A (zh) | 一种fpga安全启动的方法、装置、设备及可读介质 |
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 |