CN110826031B - 加密方法、装置、计算机设备及存储介质 - Google Patents

加密方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN110826031B
CN110826031B CN201911052602.0A CN201911052602A CN110826031B CN 110826031 B CN110826031 B CN 110826031B CN 201911052602 A CN201911052602 A CN 201911052602A CN 110826031 B CN110826031 B CN 110826031B
Authority
CN
China
Prior art keywords
file
encryption
application program
language
private key
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
CN201911052602.0A
Other languages
English (en)
Other versions
CN110826031A (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.)
Wanghai Kangxin Beijing Technology Co ltd
Original Assignee
Wanghai Kangxin Beijing Technology 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 Wanghai Kangxin Beijing Technology Co ltd filed Critical Wanghai Kangxin Beijing Technology Co ltd
Priority to CN201911052602.0A priority Critical patent/CN110826031B/zh
Publication of CN110826031A publication Critical patent/CN110826031A/zh
Application granted granted Critical
Publication of CN110826031B publication Critical patent/CN110826031B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • 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
    • H04L63/0442Network 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 wherein the sending and receiving network entities apply asymmetric encryption, i.e. different keys for encryption and decryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2463/00Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00
    • H04L2463/101Additional details relating to network architectures or network communication protocols for network security covered by H04L63/00 applying security measures for digital rights management

Abstract

本发明实施例公开了一种加密方法、装置、计算机设备及存储介质,包括下述步骤:获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行。通过对目标私钥使用加密语言进行编译,从而无法使用正常的破解应用程序的逻辑获取目标私钥,根据加密语言配置加载器的解密逻辑,必须使用指定的加载器与对应的密钥才可以顺利解密并加载应用程序。

Description

加密方法、装置、计算机设备及存储介质
技术领域
本发明涉及计算机应用技术领域,特别是涉及一种加密方法、装置、计算机设备及存储介质。
背景技术
JAVA应用程序由于其高可移植性,被广泛应用在我们生活中的智能移动终端、PC端、网页站点等,目前大量的企业级应用软件及互联网应用软件都是通过Java编写的。而为了达到这种高可移植性, JAVA应用程序牺牲了自身编译的彻底性,由此而带来的安全隐患是 JAVA应用程序容易被进行反向编译,造成用户数据、程序数据和程序源码泄露。
由于Java通过虚拟机方式运行,所有采用Java编写的应用软件源程序代码经过Java编译器编译后,并不生成二进制原生本机机器代码,而是生成Java字节码。Java字节码独立于计算机硬件及操作系统,在运行时由Java虚拟机负责解释并即时生成本机机器代码而执行。Java字节码非常容易被各类反编译工具分析并反编译还原为 Java源程序代码,这就导致了各类Java应用软件在版权保护、防止盗版破解等方面的能力变得异常薄弱。虽然随后出现了Java混淆器可以将Java字节码进行扰乱混淆,以便使反编译工具在反编译还原操作后生成的Java源程序代码晦涩难懂,增加了阅读理解难度,但仍然无法从本质上阻止反编译工具对Java字节码的反向工程。因此,如何彻底解决Java应用软件的加密保护,继而防止对其进行反向工程就成为一个亟待解决的问题。
发明内容
本发明实施例能够提供一种有效提高破解难度的加密方法、装置、计算机设备及存储介质。
为解决上述技术问题,本发明创造的实施例采用的一个技术方案是:提供一种加密方法,包括以下步骤:
获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;
根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;
根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行。
可选地,所述获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言的步骤之前,包括以下步骤:
获取所述目标应用程序的源代码;
对所述目标应用程序的源代码进行编译和混淆操作,生成混淆文件;
根据预设的加密规则对所述混淆文件进行加密并生成所述目标私钥。
可选地,所述混淆文件包括混淆后的编译文件与映射文件,所述映射文件用于存储所述混淆后的编译文件内容与原编译文件内容的映射关系,所述根据预设的加密规则对所述混淆文件进行加密并生成所述目标私钥的步骤,包括以下步骤:
根据预设的加密规则对所述映射文件进行加密以生成加密文件与所述目标私钥;
打包所述加密文件与所述混淆后的编译文件。
可选地,所述根据预设的加密规则对所述映射文件进行加密以生成加密文件与所述目标私钥的步骤,包括以下步骤:
根据非对称加密技术生成密钥对,其中,所述密钥对包括公钥与私钥;
利用所述公钥对所述映射文件进行分段加密生成所述加密文件;
定义所述私钥为所述目标私钥,并根据预设的封装规则对目标私钥进行封装。
可选地,所述对所述目标应用程序的源代码进行编译和混淆操作,生成混淆文件的步骤,包括下述步骤:
根据指定的编译语言对所述源代码进行编译以生成编译文件;
根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件。
可选地,所述根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件的步骤,包括下述步骤:
配置混淆选项,指定入口文件混淆后的名称;
根据所述混淆选项对所述编译文件进行混淆操作。
可选地,所述根据所述加密语言配置目标应用程序的加载器的解密逻辑的步骤之后,包括下述步骤:
获取目标用户的校验信息;
根据所述用户的校验信息配置所述加载器的校验规则。
为解决上述技术问题,本发明实施例还提供一种加密装置,包括:
获取模块,用于获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;
查找模块,用于根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;
配置模块,用于根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行。
可选地,所述加密装置,还包括:
第一获取子模块,用于获取所述目标应用程序的源代码;
第一处理子模块,用于对所述目标应用程序的源代码进行编译和混淆操作,生成混淆文件;
第一加密子模块,用于根据预设的加密规则对所述混淆文件进行加密并生成所述目标私钥。
可选地,所述加密装置,还包括:
第二加密子模块,用于根据预设的加密规则对所述映射文件进行加密以生成加密文件与所述目标私钥;
第一打包子模块,用于打包所述加密文件与所述混淆后的编译文件。
可选地,所述加密装置,还包括:
第二处理子模块,用于根据非对称加密技术生成密钥对,其中,所述密钥对包括公钥与私钥;
第三加密子模块,用于利用所述公钥对所述映射文件进行分段加密生成所述加密文件;
第一执行子模块,用于定义所述私钥为所述目标私钥,并根据预设的封装规则对目标私钥进行封装。
可选地,所述加密装置,还包括:
第一编译子模块,用于根据指定的编译语言对所述源代码进行编译以生成编译文件;
第一混淆子模块,用于根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件。
可选地,所述加密装置,还包括:
第一配置子模块,用于配置混淆选项,指定入口文件混淆后的名称;
第二混淆子模块,用于根据所述混淆选项对所述编译文件进行混淆操作。
可选地,所述加密装置,还包括:
第二获取子模块,用于获取目标用户的校验信息;
第二配置子模块,用于根据所述用户的校验信息配置所述加载器的校验规则。
为解决上述技术问题,本发明实施例还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,使得所述处理器执行上述所述加密方法的步骤。
为解决上述技术问题,本发明实施例还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述加密方法的步骤。
本发明实施例的有益效果是:通过对目标私钥使用加密语言进行编译,加密语言的设置与应用程序的编译语言并不相同,从而无法通过正常的破解应用程序的逻辑获取目标私钥,提高了破解难度。根据私钥的加密语言配置加载器的解密逻辑,加载器在利用私钥加载应用程序之前,需要根据解密逻辑才能获取私钥,必须使用指定的加载器与对应的私钥才可以顺利解密并加载应用程序,有效提高了应用程序代码的安全性,降低源码与数据的泄漏风险。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例加密方法的基本流程示意图;
图2为本发明实施例对源代码进行混淆加密的流程示意图;
图3为本发明实施例加密混淆文件的流程示意图;
图4为本发明实施例加密映射文件的流程示意图;
图5为本发明实施例编译源代码并进行混淆的流程示意图;
图6为本发明实施例混淆编译文件的流程示意图;
图7为本发明实施例配置校验规则的流程示意图;
图8为本发明实施例加密装置的基本结构框图;
图9为本发明实施例计算机设备基本结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。
在本发明的说明书和权利要求书及上述附图中的描述的一些流程中,包含了按照特定顺序出现的多个操作,但是应该清楚了解,这些操作可以不按照其在本文中出现的顺序来执行或并行执行,操作的序号如101、102等,仅仅是用于区分开各个不同的操作,序号本身不代表任何的执行顺序。另外,这些流程可以包括更多或更少的操作,并且这些操作可以按顺序执行或并行执行。需要说明的是,本文中的“第一”、“第二”等描述,是用于区分不同的消息、设备、模块等,不代表先后顺序,也不限定“第一”和“第二”是不同的类型。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域技术人员在没有付出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,这里所使用的“终端”、“终端设备”既包括无线信号接收器的设备,其仅具备无发射能力的无线信号接收器的设备,又包括接收和发射硬件的设备,其具有能够在双向通信链路上,执行双向通信的接收和发射硬件的设备。这种设备可以包括:蜂窝或其他通信设备,其具有单线路显示器或多线路显示器或没有多线路显示器的蜂窝或其他通信设备;PCS (PersonalCommunicationsService,个人通信系统),其可以组合语音、数据处理、传真和/或数据通信能力;PDA(PersonalDigitalAssistant,个人数字助理),其可以包括射频接收器、寻呼机、互联网/内联网访问、网络浏览器、记事本、日历和/或GPS(GlobalPositioningSystem,全球定位系统)接收器;常规膝上型和/或掌上型计算机或其他设备,其具有和/或包括射频接收器的常规膝上型和/或掌上型计算机或其他设备。这里所使用的“终端”、“终端设备”可以是便携式、可运输、安装在交通工具(航空、海运和/或陆地)中的,或者适合于和/ 或配置为在本地运行,和/或以分布形式,运行在地球和/或空间的任何其他位置运行。这里所使用的“终端”、“终端设备”还可以是通信终端、上网终端、音乐/视频播放终端,例如可以是PDA、MID (MobileInternetDevice,移动互联网设备)和/或具有音乐/视频播放功能的移动电话,也可以是智能电视、机顶盒等设备。
具体地请参阅图1,图1为本实施例加密方法的基本流程示意图。
如图1所示,一种加密方法,包括以下步骤:
S1100、获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;
通过本地存储或服务器端记录的信息获取目标应用程序的环境参数,环境参数包括目标应用程序的编译语言。
S1200、根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;
在封装完应用程序之后,对应用程序进行加密,并配置对应的目标私钥。目标私钥用于作为用户运行应用程序前对加密包进行解密,只有通过对应的目标私钥解密之后才可以获取可加载的文件,从而运行应用程序。在一些实施方式中,针对不同用户设置不同的密钥,例如用户为多个公司时,每个公司设置不同的密钥,从而对每个公司中的所有终端进行统一授权和管理,或者对于每一个运行终端均设置单独的密钥,从而限制加载目标应用程序的终端数量。
具体地,以java编写的应用程序为例,采用Java编写的应用软件源程序代码经过Java编译器编译后,生成Java字节码,将编译结果打包成jay文件,然后通过非对称加密的方式对jay文件进行加密得到加密文件及对应的私钥。在一些实施方式中,对源代码或者编译后的jay文件进行混淆,将混淆文件打包成新的jay文件,对混淆后的jay文件或者class文件进行加密生成密钥,即目标私钥。
在确定目标私钥之后,将目标私钥的内容通过预设的加密语言进行封装,加密语言可以是与应用程序的编写语言不同的其他语言,例如当应用程序是java编写的,加密语言可以为C或者C++,利用加密语言对密钥进行再编译,从而进行伪装,防止他人通过java反编译的方式获取到密钥。
系统对目标应用程序的编译语言设置有对应的加密语言,加密语言和编译语言为两种不同的编程语言,例如当应用程序通过JAVA编写时,加密语言可以为C或者C++等JAVA以外的语言。在一些实施方式中,编译语言与加密语言的对应关系根据客户的不同可以进行设置,例如对于同一种语言编写的应用程序,对于不同的用户使用不同的语言进行加密。在确定目标应用程序的编译语言之后,通过系统或服务器中存储的信息确定对应的加密语言。
S1300、根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行;
加载器在加载应用程序之前需要利用私钥对加密的文件包进行解密,然后才可以加载运行对应的应用程序。目标私钥的运行环境与目标应用程序一致,但由于目标私钥利用加密语言进行了封装,因此加载器无法直接获取和运行目标私钥,需要将目标私钥的获取方式配置于加载器中,加载器在利用目标私钥解密加密文件之前,需要先通过配置的解密逻辑对封装后的目标私钥进行解封,解密逻辑用于根据加密语言将封装后的目标私钥进行解封,使目标私钥可以在目标应用程序的运行环境中运行,从而解密加密文件。例如通过JVM类加载器运行应用程序,需要将目标私钥与私钥的获取方式(解密逻辑)抽取成native的方法,配置在JVM类加载器中。
在一些实施方式中,针对于不同的用户可以通过不同加密语言对私钥进行封装,从而配置各自的加载器,当加载器与封装后的私钥相匹配时才可以正常运行程序。
如图2所示,步骤S1100之前还包括以下步骤:
S1010、获取所述目标应用程序的源代码;
在系统存储的内容或者服务器中获取到待封装的应用程序源代码,源代码可以包括业务逻辑代码和软件版权保护代码等。
S1020、对所述目标应用程序的源代码进行编译和混淆操作,生成混淆文件;
将获取到源代码进行编译和混淆,在一些实施方式中,可以先对源码进行编译,然后对编译完成后的编译文件进行混淆,也可以先对源码进行混淆,混淆后再进行编译,在此不作限定。通过配置混淆规则,将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,将混淆后的文件和存储有混淆映射规则的文件打包作为混淆文件。
S1030、根据预设的加密规则对所述混淆文件进行加密并生成所述目标私钥;
在编译和混淆得到混淆文件之后,对混淆后的编译文件或者混淆的映射文件进行加密,并根据加密方式生成对应的目标私钥。具体地,以java编写的应用程序为例,采用Java编写的应用软件源程序代码经过Java编译器编译后,生成Java字节码,将编译结果打包成jay 文件,然后通过非对称加密的方式对jay文件进行加密得到加密文件及对应的密钥。在一些实施方式中,对源代码或者编译后的jay文件进行混淆,将混淆文件打包成新的jay文件,对混淆后的jay文件或者class文件进行加密并生成用于解密的目标私钥。
通过对源码进行混淆并加密的方式,可以降低他人通过反编译手段获取到源码的风险,有效提高破解难度。
如图3所示,步骤S1030具体包括以下步骤:
S1031、根据预设的加密规则对所述映射文件进行加密以生成加密文件与所述目标私钥;
混淆文件包括混淆后的编译文件以及存储有混淆映射关系的映射文件。在一些实施方式中,利用RSA加密算法生成密钥对,密钥对包括公钥和私钥,解析混淆文件中的映射文件,并利用公钥对混淆得到的映射文件进行加密,以得到对应的加密文件。
S1032、打包所述加密文件与所述混淆后的编译文件;
在对映射文件进行加密得到加密文件后,将加密文件与混淆后的编译文件进行打包生成发布文件,发布文件即用户可以获取得到的应用程序文件包。
通过对映射文件进行加密的方式,用户只能通过对应的密钥解密得到对应的映射文件才可以对加载运行混淆后的编译文件,在用户无法获取密钥的情况下无法正常运行应用程序,降低应用程序被破解或非法传播使用的风险。
如图4所示,步骤S1031具体包括以下步骤:
S1033、根据非对称加密技术生成密钥对,其中,所述密钥对包括公钥与私钥;
在一些实施方式中,根据RAS非对称加密技术生成对密钥对,密钥对包括公钥和私钥,公钥用于对待加密的文件进行加密以生成加密文件,私钥用于对加密文件进行解密从而获取加密前的原文件。具体地,首先要选择两个大的素数,记为p和q,一般而言这两个数应该至少有200位,然后,开始计算n:n=pq。接下来,选择一个小的奇数e,它将成为公钥的一部分。选择e最需要考虑的重点是它与 (p-1)(q-1)不能有相同的因子,即e与(p-1)(q-1)是互为素数关系的,然后计算相对应的值d,d将成为私钥的一部分。d的值就是计算e 的倒数对(p-1)(q-1)的取模结果,将(e,n)作为公钥P,将(d,n)作为私钥S并保持其不可见。表示为:P=(e,n),S=(d,n)。
S1034、利用所述公钥对所述映射文件进行分段加密生成所述加密文件;
在获取到公钥之后,确定加密分段的大小,为了实现这一步,必须确保该分组可以保存的最大数值要小于n的位数。比如,如果p和 q都是200位数字的素数,则n的结果将小于400位。因而,所选择的分组所能保存的最大值应该要以是接近于400。在确定分段的大小之后,对映射文件进行分段并进行加密。
S1035、定义所述私钥为所述目标私钥,并根据预设的封装规则对目标私钥进行封装;
定义计算得到的私钥为目标应用程序的目标私钥,然后根据目标应用程序的编译语言查找对应的用于对目标私钥进行封装的加密语言,利用加密语言对目标私钥进行封装。
如图5所示,步骤S1020具体包括下述步骤:
S1021、根据指定的编译语言对所述源代码进行编译以生成编译文件;
使用应用程序的编译语言对源代码进行编译,例如采用Java编写的应用软件源程序代码经过Java编译器编译后,生成Java字节码,将编译结果打包成jay文件,即编译文件。
S1022、根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件;
通过配置混淆规则,将代码中的各种元素,如变量,函数,类的名字改写成无意义的名字。比如改写成单个字母,或是简短的无意义字母组合,将混淆后的文件和存储有混淆映射规则的文件打包作为混淆文件。
如图6所示,步骤S1022具体包括下述步骤:
S1023、配置混淆选项,指定入口文件混淆后的名称;
配置混淆选项,混淆选项包括混淆后内容与代码元素的映射逻辑,例如将代码中的各种元素,如变量,函数,类与单个字母或字母组合进行映射对应。当代码进行混淆之后加载器无法获取到对应的入口,从而无法正常运行应用程序,因此需要指定入口文件,确定入口文件混淆后的名称,也可以在混淆选项中时设定入口文件使用原类名。
S1024、根据所述混淆选项对所述编译文件进行混淆操作;
在确定混淆选项之后,根据混淆选项对编译文件进行混淆操作,将代码中的各种元素,如变量,函数,类与单个字母或字母组合。
如图7所示,步骤S1300之后还包括下述步骤:
S1400、获取目标用户的校验信息;
为了对不同的用户进行用户身份的验证,确定用户对应用程序的使用权限,在加载器中需要配置对应的检验规则,具体地,可以通过用户的CPU或主板的ID、网卡mac地址或网络ID等作为目标用户终端的校验信息,校验信息可以根据实际使用需求进行选择,在此不作限定。
S1500、根据所述用户的校验信息配置所述加载器的校验规则;
根据用户的校验信息,设定加载器在运行时先对用户权限进行验证,当确认用户具备运行权限时才开始运行。例如当验证信息为网卡 MAC地址,加载器在打开时、加载私钥前或者应用程序运行前先对当前终端网卡的MAC地址进行验证,当网卡MAC地址与设定的地址相匹配时,确定当前终端具备运行权限,加载器正常运行。
为解决上述技术问题,本发明实施例还提供一种加密装置。具体请参阅图8,图8为本实施加密装置的基本结构框图。
如图8所示,加密装置,包括:获取模块2100、查找模块2200 和配置模块2300。其中,获取模块用于获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;查找模块用于根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;配置模块用于根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行。
通过对目标私钥使用加密语言进行编译,加密语言的设置与应用程序的编译语言并不相同,从而无法通过正常的破解应用程序的逻辑获取目标私钥,提高了破解难度。根据私钥的加密语言配置加载器的解密逻辑,加载器在利用私钥加载应用程序之前,需要根据解密逻辑才能获取私钥,必须使用指定的加载器与对应的私钥才可以顺利解密并加载应用程序,有效提高了应用程序代码的安全性,降低源码与数据的泄漏风险。
在一些实施方式中,加密装置还包括:第一获取子模块、第一处理子模块、第一加密子模块。其中第一获取子模块用于获取所述目标应用程序的源代码;第一处理子模块用于对所述目标应用程序的源代码进行编译和混淆操作,生成混淆文件;第一加密子模块用于根据预设的加密规则对所述混淆文件进行加密并生成所述目标私钥。
在一些实施方式中,加密装置还包括:第二加密子模块、第一打包子模块。其中,第二加密子模块用于根据预设的加密规则对所述映射文件进行加密以生成加密文件与所述目标私钥;第一打包子模块用于打包所述加密文件与所述混淆后的编译文件。
在一些实施方式中,加密装置还包括:第二处理子模块、第三加密子模块、第一执行子模块。其中,第二处理子模块用于根据非对称加密技术生成密钥对,其中,所述密钥对包括公钥与私钥;第三加密子模块用于利用所述公钥对所述映射文件进行分段加密生成所述加密文件;第一执行子模块用于定义所述私钥为所述目标私钥,并根据预设的封装规则对目标私钥进行封装。
在一些实施方式中,加密装置还包括:第一编译子模块、第一混淆子模块。其中,第一编译子模块用于根据指定的编译语言对所述源代码进行编译以生成编译文件;第一混淆子模块用于根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件。
在一些实施方式中,加密装置还包括:第一配置子模块、第二混淆子模块。其中,第一配置子模块用于配置混淆选项,指定入口文件混淆后的名称;第二混淆子模块用于根据所述混淆选项对所述编译文件进行混淆操作。
在一些实施方式中,加密装置还包括:第二获取子模块、第二配置子模块。其中,第二获取子模块用于获取目标用户的校验信息;第二配置子模块用于根据所述用户的校验信息配置所述加载器的校验规则。
为解决上述技术问题,本发明实施例还提供一种计算机设备。具体请参阅图9,图9为本实施例计算机设备基本结构框图。
如图9所示,计算机设备的内部结构示意图。如图9所示,该计算机设备包括通过系统总线连接的处理器、非易失性存储介质、存储器和网络接口。其中,该计算机设备的非易失性存储介质存储有操作系统、数据库和计算机可读指令,数据库中可存储有控件信息序列,该计算机可读指令被处理器执行时,可使得处理器实现一种加密方法。该计算机设备的处理器用于提供计算和控制能力,支撑整个计算机设备的运行。该计算机设备的存储器中可存储有计算机可读指令,该计算机可读指令被处理器执行时,可使得处理器执行一种加密方法。该计算机设备的网络接口用于与终端连接通信。本领域技术人员可以理解,图中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本实施方式中处理器用于执行图8中获取模块2100、查找模块 2200和配置模块2300的具体功能,存储器存储有执行上述模块所需的程序代码和各类数据。网络接口用于向用户终端或服务器之间的数据传输。本实施方式中的存储器存储有加密装置中执行所有子模块所需的程序代码及数据,服务器能够调用服务器的程序代码及数据执行所有子模块的功能。
本发明还提供一种存储有计算机可读指令的存储介质,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述任一实施例所述加密方法的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-OnlyMemory,ROM)等非易失性存储介质,或随机存储记忆体(RandomAccessMemory,RAM)等。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种加密方法,其特征在于,包括以下步骤:
对目标应用程序的源代码进行编译和混淆操作,生成混淆文件;所述混淆文件包括混淆后的编译文件与映射文件,所述映射文件用于存储所述混淆后的编译文件内容与原编译文件内容的映射关系;
根据非对称加密技术生成密钥对,其中,所述密钥对包括公钥与私钥;
利用所述公钥对所述映射文件进行分段加密生成加密文件;
将所述私钥作为目标私钥,并根据目标应用程序的加密语言对所述目标私钥进行封装;
获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;
根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;所述编译语言与所述加密语言为两种不同的语言;
根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行。
2.如权利要求1所述的加密方法,其特征在于,所述利用所述公钥对所述映射文件进行分段加密生成所述加密文件之后,还包括:
打包所述加密文件与所述混淆后的编译文件。
3.如权利要求1所述的加密方法,其特征在于,所述对所述目标应用程序的源代码进行编译和混淆操作,生成混淆文件的步骤,包括下述步骤:
根据指定的编译语言对所述源代码进行编译以生成编译文件;
根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件。
4.如权利要求3所述的加密方法,其特征在于,所述根据预设的混淆规则对所述编译文件进行混淆操作生成所述混淆文件的步骤,包括下述步骤:
配置混淆选项,指定入口文件混淆后的名称;
根据所述混淆选项对所述编译文件进行混淆操作。
5.如权利要求1-4任一项所述的加密方法,其特征在于,所述根据所述加密语言配置目标应用程序的加载器的解密逻辑的步骤之后,包括下述步骤:
获取目标用户的校验信息;
根据所述用户的校验信息配置所述加载器的校验规则。
6.一种加密装置,其特征在于,包括:
第一处理子模块,用于对目标应用程序的源代码进行编译和混淆操作,生成混淆文件;所述混淆文件包括混淆后的编译文件与映射文件,所述映射文件用于存储所述混淆后的编译文件内容与原编译文件内容的映射关系;
第二处理子模块,用于根据非对称加密技术生成密钥对,其中,所述密钥对包括公钥与私钥;
第三加密子模块,用于利用所述公钥对所述映射文件进行分段加密生成加密文件;
第一执行子模块,用于将所述私钥作为目标私钥,并根据目标应用程序的加密语言对所述目标私钥进行封装;
获取模块,用于获取目标应用程序的环境参数,所述环境参数包括所述目标应用程序的编译语言;
查找模块,用于根据所述目标应用程序的编译语言查找所述目标应用程序的目标私钥的加密语言;所述编译语言与所述加密语言为两种不同的语言;
配置模块,用于根据所述加密语言配置目标应用程序的加载器的解密逻辑,其中,所述解密逻辑用于将通过加密语言封装后的目标私钥进行解封,以使所述私钥可以在所述目标应用程序的运行环境上运行。
7.一种计算机设备,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行上述权利要求1-5任意一项所述的加密方法。
8.一种非临时性计算机可读存储介质,当所述存储介质中的指令由移动终端的处理器执行时,使得移动终端能够执行一种加密方法,所述方法包括上述权利要求1-5任意一项所述的加密方法。
CN201911052602.0A 2019-10-31 2019-10-31 加密方法、装置、计算机设备及存储介质 Active CN110826031B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911052602.0A CN110826031B (zh) 2019-10-31 2019-10-31 加密方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911052602.0A CN110826031B (zh) 2019-10-31 2019-10-31 加密方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN110826031A CN110826031A (zh) 2020-02-21
CN110826031B true CN110826031B (zh) 2022-08-02

Family

ID=69551653

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911052602.0A Active CN110826031B (zh) 2019-10-31 2019-10-31 加密方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN110826031B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111552524B (zh) * 2020-05-06 2023-10-13 Oppo(重庆)智能科技有限公司 一种插件加载方法、装置及计算机可读存储介质
CN112395563A (zh) * 2020-11-30 2021-02-23 广州市都享信息科技有限公司 软件产品加密的方法、装置、存储介质及处理器
CN112948773A (zh) * 2021-02-07 2021-06-11 深圳市大梦龙途文化传播有限公司 脚本加密与解密方法、终端设备及可读存储介质
CN113141347B (zh) * 2021-03-16 2022-06-10 中国科学院信息工程研究所 社工信息保护方法、装置、电子设备和存储介质
CN113190877B (zh) * 2021-04-29 2022-10-04 网易(杭州)网络有限公司 一种模型加载方法、装置、可读存储介质及电子设备
CN114722359A (zh) * 2022-04-08 2022-07-08 北京航天长城卫星导航科技有限公司 一种基于自定义类加载器的Java源码保护方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598017A (zh) * 2009-11-13 2012-07-18 埃德图加拿大公司 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法
CN108898007A (zh) * 2018-06-26 2018-11-27 焦点科技股份有限公司 一种基于JavaAgent和dll增强Java分发软件的安全方法
CN109784007A (zh) * 2018-12-04 2019-05-21 厦门中控智慧信息技术有限公司 一种字节码加密的方法、字节码解密的方法及终端
CN109995526A (zh) * 2019-04-10 2019-07-09 睿驰达新能源汽车科技(北京)有限公司 一种密钥的存储方法和装置、密钥的调用方法和装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8707035B2 (en) * 2012-03-30 2014-04-22 Decho Corporation High privacy of file synchronization with sharing functionality
US10685142B2 (en) * 2015-02-02 2020-06-16 Indiana University Research And Technology Corporation External resource control of mobile devices
CN104899481A (zh) * 2015-06-17 2015-09-09 上海斐讯数据通信技术有限公司 防止应用程序反编译的系统及其方法
CN105844150A (zh) * 2016-03-23 2016-08-10 青岛海信传媒网络技术有限公司 一种应用程序的数据保护方法和装置
CN106778100B (zh) * 2016-12-01 2020-06-05 北京智游网安科技有限公司 基于安卓平台和ios平台的混淆编译方法及混淆编译器
CN106792669A (zh) * 2016-12-28 2017-05-31 北京五八信息技术有限公司 基于混合加密算法的移动终端信息加密方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102598017A (zh) * 2009-11-13 2012-07-18 埃德图加拿大公司 保护Java字节码代码免受恶意运行环境中的静态和动态攻击的系统和方法
CN108898007A (zh) * 2018-06-26 2018-11-27 焦点科技股份有限公司 一种基于JavaAgent和dll增强Java分发软件的安全方法
CN109784007A (zh) * 2018-12-04 2019-05-21 厦门中控智慧信息技术有限公司 一种字节码加密的方法、字节码解密的方法及终端
CN109995526A (zh) * 2019-04-10 2019-07-09 睿驰达新能源汽车科技(北京)有限公司 一种密钥的存储方法和装置、密钥的调用方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Java加密Jar包和Class文件防止反编译的方法;为中;《https://blog.csdn.net/fanglei517/article/details/73198419》;20170614;文章全文 *
对Java代码加密的两种方式,防止反编译;senseshield;《https://blog.51cto.com/senseshield/2112693》;20180504;文章全文 *

Also Published As

Publication number Publication date
CN110826031A (zh) 2020-02-21

Similar Documents

Publication Publication Date Title
CN110826031B (zh) 加密方法、装置、计算机设备及存储介质
AU2012337403B2 (en) Cryptographic system and methodology for securing software cryptography
CN108712412B (zh) 一种数据库的加密、解密方法、装置、存储介质及终端
WO2021217980A1 (zh) java代码的加壳方法与系统
CN109784007B (zh) 一种字节码加密的方法、字节码解密的方法及终端
CN111475824B (zh) 数据访问方法、装置、设备和存储介质
EP2897074A1 (en) Application code obfuscation device based on self-conversion and method therefor
CN106055936B (zh) 可执行程序数据包加密/解密方法及装置
US7970133B2 (en) System and method for secure and flexible key schedule generation
CN104680039A (zh) 一种应用程序安装包的数据保护方法及装置
CN111191195A (zh) 一种用于保护apk的方法和装置
CN108134673B (zh) 一种生成白盒库文件的方法及装置
CN111475543A (zh) 一种模糊搜索方法、装置、计算机设备及存储介质
CN107196907A (zh) 一种安卓so文件的保护方法及装置
CN108399319A (zh) 源代码保护方法、应用服务器及计算机可读存储介质
CN108183796A (zh) 利用白盒库文件和白盒密钥文件进行加解密的方法及装置
CN108111622A (zh) 一种下载白盒库文件的方法、装置及系统
CN108416224B (zh) 一种数据加解密方法及装置
CN111159658B (zh) 字节码处理方法、系统、装置、计算机设备和存储介质
CN109784072B (zh) 一种安全文件管理方法和系统
CN110737910B (zh) 一种Android log解密管理方法、装置、设备和介质
CN113420313A (zh) 程序安全运行、加密方法及其装置、设备、介质
KR102039380B1 (ko) 공유 오브젝트의 코드 보호를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
CN114896621B (zh) 应用服务的获取方法、加密方法、装置、计算机设备
CN113760294A (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