CN111078224A - 软件包文件数据处理方法、装置、计算机设备及存储介质 - Google Patents

软件包文件数据处理方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN111078224A
CN111078224A CN201910969948.0A CN201910969948A CN111078224A CN 111078224 A CN111078224 A CN 111078224A CN 201910969948 A CN201910969948 A CN 201910969948A CN 111078224 A CN111078224 A CN 111078224A
Authority
CN
China
Prior art keywords
data
interface
dynamic link
link library
file
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
Application number
CN201910969948.0A
Other languages
English (en)
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.)
Ping An Life Insurance Company of China Ltd
Original Assignee
Ping An Life Insurance Company of China 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 Ping An Life Insurance Company of China Ltd filed Critical Ping An Life Insurance Company of China Ltd
Priority to CN201910969948.0A priority Critical patent/CN111078224A/zh
Publication of CN111078224A publication Critical patent/CN111078224A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了软件包文件数据处理方法、装置、计算机设备及存储介质。该方法先通过加密动态链接库对业务逻辑数据进行加密打包成JAR包,并暴露JAR包的接口文件,之后通过JNI接口调用接口文件及解密动态链接库,由解密动态链接库对接口文件进行解密,以得到与JAR包对应的解密数据,加载第一函数以将解密数据还原成class对象,实现了将所述class对象作为所述JAR包对应的当前接口,通过当前接口对当前待计算业务数据进行运算,不仅增强了JAR包的安全性,而且整体运算性能不受影响。

Description

软件包文件数据处理方法、装置、计算机设备及存储介质
技术领域
本发明涉及数据处理技术领域,尤其涉及一种软件包文件数据处理方法、装置、计算机设备及存储介质。
背景技术
目前,一般Java程序可以直接打包成JAR包(JAR包是一种软件包文件格式,通常用于聚合大量的Java类文件、相关的元数据和资源文件到一个文件,以便开发Java平台应用软件或库),而JAR包的反编译是十分容易,导致JAR包内代码的数据安全性不高。也可以采用代码混淆工具对Java程序的代码进行混淆处理后再打JAR包,JAR包内代码也是比较容易被破解,也导致JAR包内代码的数据安全性不高。
发明内容
本发明实施例提供了一种软件包文件数据处理方法、装置、计算机设备及存储介质,旨在解决现有技术中JAR包内代码也是比较容易被破解,也导致JAR包内代码的数据安全性不高的问题。
第一方面,本发明实施例提供了一种软件包文件数据处理方法,其包括:
接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算;
将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露;
通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据;
加载预先构建的第一函数以将所述解密数据还原成class对象,将所述class对象作为所述JAR包对应的当前接口;其中,所述第一函数用于对数据进行Java反序列化;
若检测到当前接口调用指令,接收发送端所上传的当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算,以得到计算结果;以及
将所述计算结果发送至所述发送端。
第二方面,本发明实施例提供了一种软件包文件数据处理装置,其包括:
第一接收单元,用于接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算;
加密打包单元,用于将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露;
解密单元,用于通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据;
接口获取单元,用于加载预先构建的第一函数以将所述解密数据还原成class对象,将所述class对象作为所述JAR包对应的当前接口;其中,所述第一函数用于对数据进行Java反序列化;
第二接收单元,用于若检测到当前接口调用指令,接收发送端所上传的当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算,以得到计算结果;以及
结果发送单元,用于将所述计算结果发送至所述发送端。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的软件包文件数据处理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的软件包文件数据处理方法。
本发明实施例提供了一种软件包文件数据处理方法、装置、计算机设备及存储介质,先通过加密动态链接库对业务逻辑数据进行加密打包成JAR包,并暴露JAR包的接口文件,之后通过JNI接口调用接口文件及解密动态链接库,由解密动态链接库对接口文件进行解密,以得到与JAR包对应的解密数据,加载第一函数以将解密数据还原成class对象,实现了将所述class对象作为所述JAR包对应的当前接口,通过当前接口对当前待计算业务数据进行运算,不仅增强了JAR包的安全性,而且整体运算性能不受影响。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的软件包文件数据处理方法的应用场景示意图;
图2为本发明实施例提供的软件包文件数据处理方法的流程示意图;
图3为本发明实施例提供的软件包文件数据处理方法的另一流程示意图;
图4为本发明实施例提供的软件包文件数据处理方法的子流程示意图;
图5为本发明实施例提供的软件包文件数据处理方法的另一子流程示意图;
图6为本发明实施例提供的软件包文件数据处理装置的示意性框图;
图7为本发明实施例提供的软件包文件数据处理装置的另一示意性框图;
图8为本发明实施例提供的软件包文件数据处理装置的子单元示意性框图;
图9为本发明实施例提供的软件包文件数据处理装置的另一子单元示意性框图;
图10为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的软件包文件数据处理方法的应用场景示意图;图2为本发明实施例提供的软件包文件数据处理方法的流程示意图,该软件包文件数据处理方法应用于服务器中,该方法通过安装于服务器中的应用软件进行执行。
如图2所示,该方法包括步骤S110~S160。
S110、接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算。
在本实施例中,当服务器(即Java平台)接收了上传端所发送的业务逻辑数据(所述业务逻辑数据为由Java语言编写的用于对业务数据进行运算的代码),若是服务器将这些代码直接未作任何处理而供其他终端调用进行运算时,会导致业务逻辑数据的数据安全性极低,故可以通过服务器对其进行加密处理以提高数据安全性。
在一实施例中,如图3所示,步骤S110之前还包括:
S101、配置用于对数据进行加密的加密动态链接库,及用于对数据进行解密的解密动态链接库;
S102、配置用于与加密动态链接库及解密动态链接库进行交互的JNI接口。
在本实施例中,在服务器中可以配置通过Crypto++编写的加密动态链接库和解密动态链接库,以供其他接口调用。
动态链接库即Dynamic Link Library或者Dynamic-link Library,缩写为DLL。动态链接库的本质是一个函数库,可以封装多个类型的函数。函数的可执行代码位于一个DLL文件中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL还有助于共享数据和资源。多个应用程序可同时访问内存中单个DLL副本的内容。
Crypto++则是一个免费的C++类加密方案库,其包括认证的加密方案(如GCM,CCM,EAX)、高速流密码(如Panama,Sosemanuk)、AES(如RC6,MARS,Twofish)、消息认证码(如CMAC,CBC-MAC)、散列函数(如SHA-1,SHA-2,SHA-3)、公钥密码学(如RSA,DSA)等算法。
在服务器中还需构建JNI接口,JNI是Java Native Interface的缩写,表示Java本地接口,它提供了若干的API(即应用程序编程接口)实现了Java和其他语言(主要是C和C++)的通信。在Java平台中配置JNI接口,即可实现Java平台调用C或C++语言编写的函数或动态链接库。
在一实施例中,如图4所示,步骤S102包括:
S1021、创建Java类,定义Java类中的一个本地方法;所述本地方法用于调用动态链接库;
S1022、通过javah指令生成与所述本地方法对应的C头文件;
S1023、将所述C头文件进行编译得到JNI接口。
在本实施例中,在本实施例中,先创建Java类,定义Java类中的一个本地方法;具体实施时,通过native关键字修饰的方法即为Java类中的一个本地方法,该本地方法用于调用动态链接库。
然后通过javah指令生成本地方法对应的C头文件,即在DOS窗口中进入DLL工程所在目录,然后执行javah com.test.TestNative命令,执行完之后就会在当前目录生成一个后缀名为.h的头文件,如com_test_TestNative.h(这个头文件是根据包名和类名来命名的),当前目录生成一个后缀名为.h的头文件即为与所述本地方法对应的C头文件。
最后对所述C头文件进行编译得JNI接口,该JNI接口对应的JNI函数名称分为三部分:首先是Java关键字,供Java虚拟机识别;然后是调用者类名称(全限定的类名,其中用下划线代替名称分隔符);最后是对应的方法名称,各段名称之间用下划线分割。JNI函数的参数也由三部分组成:首先是JNIEnv*,是一个指向JNI运行环境的指针;第二个参数随本地方法是静态还是非静态而有所不同(非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其Java类的引用);其余的参数对应通常Java方法的参数,参数类型需要根据一定规则进行映射。
S120、将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露。
在本实施例中,当服务器接收了所述业务逻辑数据,可以将所述业务逻辑数据经过加密后仅暴露接口文件给其他接口调用,此时可以通过Java平台的JNI接口(JNI接口即Java本地接口)调用所述加密动态链接库,以将Java平台中的业务逻辑数据加密打包成JAR包。
在一实施例中,如图5所示,步骤S120包括:
S121、解析所述加密动态链接库中的加密算法;
S122、将所述业务逻辑数据通过加密算法进行加密,得到加密数据;
S123、将所述加密数据打包成JAR包,将所述JAR包的接口文件进行暴露。
在本实施例中,例如所述加密动态链接库中封装的为RSA加密算法(其为一种非对称加密算法),此时通过解析所述加密动态链接库得到的加密算法即为RSA加密算法。此时将所述业务逻辑数据通过RSA加密算法进行加密,得到加密数据。
RSA加密算法具体实现过程如下:
1)随意选择两个大的质数p和q,p不等于q,计算N=pq;
2)根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1);
3)选择一个整数e与(p-1)(q-1)互质,并且e小于(p-1)(q-1);
4)用以下公式计算d:d×e≡1(mod(p-1)(q-1))。
5)将p和q的记录销毁。
其中,(N,e)是公钥,(N,d)是私钥。RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但需对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥即公钥,而两个大素数组合成私钥。公钥是可发布的供任何人使用,私钥则为自己所有供解密之用。
之后,将所述加密数据打包为JAR包时,可以用eclipse软件打开加密数据后导出为JAR包即可。之后通过Java中的生成API文档指令(即javacdoc[命令选项][包名][源文件名][@files])来生成所述JAR包的接口文件,之后暴露出来该接口文件以供调用。例如,java doc mypackage\*.java–djavadoc,该命令用于为mypackage包下的类生成API,输出目录为javadoc,查看该API文档的方法是双击“index.html”文件。
S130、通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据。
在本实施例中,当Java平台中需要对所述接口文件调用时,需要先通过JNI接口调用所述解密动态链接库以对所述接口文件件进行解密,以得到与所述JAR包对应的解密数据,解密后将所述解密数据存储。解密数据是与JAR包接口文件对应的数据,并非原始的业务逻辑数据,这样有效的确保了业务逻辑数据的数据安全性。
在一实施例中,步骤S130之后还包括:
将所述解密数据存储至预先创建的字节数组。
在本实施例中,将所述解密数据存储至预先创建的字节数组,其中所述字节数组即byte[]数组。之所以将所述解密数据存储至字节数组,是因为Java与其他语言编写的程序进行通讯时,通讯内容一般都转换成byte数组类型。
S140、加载预先构建的第一函数以将所述解密数据还原成class对象,将所述class对象作为所述JAR包对应的当前接口;其中,所述第一函数用于对数据进行Java反序列化。
在本实施例中,所述第一函数即defineClass函数,常用于Java反序列化。众所周知,Java编译器会将.java文件编译成jvm可以识别的机器代码保存在.class文件之中。正常情况下,java会先调用classLoader去加载.class文件,然后调用loadClass函数去加载对应的类名,返回一个class对象。而defineClass提供了另外一种方法,通过defineClass可以从解密数据中还原出一个class对象。将解密数据还原为class对象后,能将所述class对象作为所述JAR包对应的当前接口以供其他终端或系统调用。
在一实施例中,步骤S140包括:
通过第一函数中classLoader类中的defineClass函数将所述解密数据还原成class对象。
在本实施例中,通过第一函数中classLoader类中的defineClass函数,有效适用于构造Java反序列化。具体实施时,因为默认的defineClass是java.lang.ClassLoader的函数,而且是protected属性(即被保护的属性),无法直接调用,而且java.lang.ClassLoader类也无法被transform函数加载,故可使用org.mozilla.classfile.DefiningClassLoader类作为defineClass函数。
S150、若检测到当前接口调用指令,接收发送端所上传的当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算,以得到计算结果。
在本实施例中,当有发送端所上传的当前待计算业务数据需要通过调用当前接口进行运算时,由Java平台的当前接口接收所述当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算得到结算结果,通过上述方式增强了JAR包的安全性,同时整体运算性能不受影响。
S160、将所述计算结果发送至所述发送端。
在本实施例中,当在服务器的当前接口完成了对所述当前待计算业务数据的运算时,将得到的计算结果发送至所述发送端,以及时反馈计算结果。
该方法实现了将class对象作为JAR包对应的当前接口,通过当前接口对当前待计算业务数据进行运算,不仅增强了JAR包的安全性,而且整体运算性能不受影响。
本发明实施例还提供一种软件包文件数据处理装置,该软件包文件数据处理装置用于执行前述软件包文件数据处理方法的任一实施例。具体地,请参阅图6,图6是本发明实施例提供的软件包文件数据处理装置的示意性框图。该软件包文件数据处理装置100可以配置于服务器中。
如图6所示,软件包文件数据处理装置100包括第一接收单元110、加密打包单元120、解密单元130、接口获取单元140、第二接收单元150、结果发送单元160。
第一接收单元110,用于接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算。
在本实施例中,当服务器(即Java平台)接收了上传端所发送的业务逻辑数据(所述业务逻辑数据为由Java语言编写的用于对业务数据进行运算的代码),若是服务器将这些代码直接未作任何处理而供其他终端调用进行运算时,会导致业务逻辑数据的数据安全性极低,故可以通过服务器对其进行加密处理以提高数据安全性。
在一实施例中,如图7所示,软件包文件数据处理装置100还包括:
第一配置单元101,用于配置用于对数据进行加密的加密动态链接库,及用于对数据进行解密的解密动态链接库;
第二配置单元102,用于配置用于与加密动态链接库及解密动态链接库进行交互的JNI接口。
在本实施例中,在服务器中可以配置通过Crypto++编写的加密动态链接库和解密动态链接库,以供其他接口调用。
在服务器中还需构建JNI接口,JNI是JavaNative Interface的缩写,表示Java本地接口,它提供了若干的API(即应用程序编程接口)实现了Java和其他语言(主要是C和C++)的通信。在Java平台中配置JNI接口,即可实现Java平台调用C或C++语言编写的函数或动态链接库。
在一实施例中,如图8所示,第二配置单元102包括:
本地方法定义单元1021,用于创建Java类,定义Java类中的一个本地方法;所述本地方法用于调用动态链接库;
C头文件获取单元1022,用于通过javah指令生成与所述本地方法对应的C头文件;
编译单元1023,用于将所述C头文件进行编译得到JNI接口。
在本实施例中,在本实施例中,先创建Java类,定义Java类中的一个本地方法;具体实施时,通过native关键字修饰的方法即为Java类中的一个本地方法,该本地方法用于调用动态链接库。
然后通过javah指令生成本地方法对应的C头文件,即在DOS窗口中进入DLL工程所在目录,然后执行javah com.test.TestNative命令,执行完之后就会在当前目录生成一个后缀名为.h的头文件,如com_test_TestNative.h(这个头文件是根据包名和类名来命名的),当前目录生成一个后缀名为.h的头文件即为与所述本地方法对应的C头文件。
最后对所述C头文件进行编译得JNI接口,该JNI接口对应的JNI函数名称分为三部分:首先是Java关键字,供Java虚拟机识别;然后是调用者类名称(全限定的类名,其中用下划线代替名称分隔符);最后是对应的方法名称,各段名称之间用下划线分割。JNI函数的参数也由三部分组成:首先是JNIEnv*,是一个指向JNI运行环境的指针;第二个参数随本地方法是静态还是非静态而有所不同(非静态本地方法的第二个参数是对对象的引用,而静态本地方法的第二个参数是对其Java类的引用);其余的参数对应通常Java方法的参数,参数类型需要根据一定规则进行映射。
加密打包单元120,用于将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露。
在本实施例中,当服务器接收了所述业务逻辑数据,可以将所述业务逻辑数据经过加密后仅暴露接口文件给其他接口调用,此时可以通过Java平台的JNI接口(JNI接口即Java本地接口)调用所述加密动态链接库,以将Java平台中的业务逻辑数据加密打包成JAR包。
在一实施例中,如图9所示,加密打包单元120包括:
加密算法获取单元121,用于解析所述加密动态链接库中的加密算法;
数据加密单元122,用于将所述业务逻辑数据通过加密算法进行加密,得到加密数据;
数据打包单元123,用于将所述加密数据打包成JAR包,将所述JAR包的接口文件进行暴露。
在本实施例中,例如所述加密动态链接库中封装的为RSA加密算法(其为一种非对称加密算法),此时通过解析所述加密动态链接库得到的加密算法即为RSA加密算法。此时将所述业务逻辑数据通过RSA加密算法进行加密,得到加密数据。
之后,将所述加密数据打包为JAR包时,可以用eclipse软件打开加密数据后导出为JAR包即可。之后通过Java中的生成API文档指令(即javacdoc[命令选项][包名][源文件名][@files])来生成所述JAR包的接口文件,之后暴露出来该接口文件以供调用。例如,java doc mypackage\*.java–djavadoc,该命令用于为mypackage包下的类生成API,输出目录为javadoc,查看该API文档的方法是双击“index.html”文件。
解密单元130,用于通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据。
在本实施例中,当Java平台中需要对所述接口文件调用时,需要先通过JNI接口调用所述解密动态链接库以对所述接口文件件进行解密,以得到与所述JAR包对应的解密数据,解密后将所述解密数据存储。解密数据是与JAR包接口文件对应的数据,并非原始的业务逻辑数据,这样有效的确保了业务逻辑数据的数据安全性。
在一实施例中,软件包文件数据处理装置100还包括:
数组存储单元,用于将所述解密数据存储至预先创建的字节数组。
在本实施例中,将所述解密数据存储至预先创建的字节数组,其中所述字节数组即byte[]数组。之所以将所述解密数据存储至字节数组,是因为Java与其他语言编写的程序进行通讯时,通讯内容一般都转换成byte数组类型。
接口获取单元140,用于加载预先构建的第一函数以将所述解密数据还原成class对象,将所述class对象作为所述JAR包对应的当前接口;其中,所述第一函数用于对数据进行Java反序列化。
在本实施例中,所述第一函数即defineClass函数,常用于Java反序列化。众所周知,Java编译器会将.java文件编译成jvm可以识别的机器代码保存在.class文件之中。正常情况下,java会先调用classLoader去加载.class文件,然后调用loadClass函数去加载对应的类名,返回一个class对象。而defineClass提供了另外一种方法,通过defineClass可以从解密数据中还原出一个class对象。将解密数据还原为class对象后,能将所述class对象作为所述JAR包对应的当前接口以供其他终端或系统调用。
在一实施例中,接口获取单元140还用于:
通过第一函数中classLoader类中的defineClass函数将所述解密数据还原成class对象。
在本实施例中,通过第一函数中classLoader类中的defineClass函数,有效适用于构造Java反序列化。具体实施时,因为默认的defineClass是java.lang.ClassLoader的函数,而且是protected属性(即被保护的属性),无法直接调用,而且java.lang.ClassLoader类也无法被transform函数加载,故可使用org.mozilla.classfile.DefiningClassLoader类作为defineClass函数。
第二接收单元150,用于若检测到当前接口调用指令,接收发送端所上传的当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算,以得到计算结果。
在本实施例中,当有发送端所上传的当前待计算业务数据需要通过调用当前接口进行运算时,由Java平台的当前接口接收所述当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算得到结算结果,通过上述方式增强了JAR包的安全性,同时整体运算性能不受影响。
结果发送单元160,用于将所述计算结果发送至所述发送端。
在本实施例中,当在服务器的当前接口完成了对所述当前待计算业务数据的运算时,将得到的计算结果发送至所述发送端,以及时反馈计算结果。
该装置实现了将class对象作为JAR包对应的当前接口,通过当前接口对当前待计算业务数据进行运算,不仅增强了JAR包的安全性,而且整体运算性能不受影响。
上述软件包文件数据处理装置可以实现为计算机程序的形式,该计算机程序可以在如图10所示的计算机设备上运行。
请参阅图10,图10是本发明实施例提供的计算机设备的示意性框图。该计算机设备500是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图10,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行软件包文件数据处理方法。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行软件包文件数据处理方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图10中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本发明实施例公开的软件包文件数据处理方法。
本领域技术人员可以理解,图10中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图10所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例公开的软件包文件数据处理方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (10)

1.一种软件包文件数据处理方法,其特征在于,包括:
接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算;
将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露;
通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据;
加载预先构建的第一函数以将所述解密数据还原成class对象,将所述class对象作为所述JAR包对应的当前接口;其中,所述第一函数用于对数据进行Java反序列化;
若检测到当前接口调用指令,接收发送端所上传的当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算,以得到计算结果;以及
将所述计算结果发送至所述发送端。
2.根据权利要求1所述的软件包文件数据处理方法,其特征在于,所述接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算,将所述业务逻辑数据通过调用加密动态链接库加密打包成JAR包,并将所述JAR包的接口文件进行暴露之前,还包括:
配置用于对数据进行加密的加密动态链接库,及用于对数据进行解密的解密动态链接库;
配置用于与加密动态链接库及解密动态链接库进行交互的JNI接口。
3.根据权利要求2所述的软件包文件数据处理方法,其特征在于,所述配置用于与加密动态链接库及解密动态链接库进行交互的JNI接口,包括:
创建Java类,定义Java类中的一个本地方法;所述本地方法用于调用动态链接库;
通过javah指令生成与所述本地方法对应的C头文件;
将所述C头文件进行编译得到JNI接口。
4.根据权利要求1所述的软件包文件数据处理方法,其特征在于,所述将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露,包括:
解析所述加密动态链接库中的加密算法;
将所述业务逻辑数据通过加密算法进行加密,得到加密数据;
将所述加密数据打包成JAR包,将所述JAR包的接口文件进行暴露。
5.根据权利要求1所述的软件包文件数据处理方法,其特征在于,所述通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据之后,还包括:
将所述解密数据存储至预先创建的字节数组。
6.根据权利要求1所述的软件包文件数据处理方法,其特征在于,所述加载预先构建的第一函数以将所述解密数据还原成class对象,包括:
通过第一函数中classLoader类中的defineClass函数将所述解密数据还原成class对象。
7.一种软件包文件数据处理装置,其特征在于,包括:
第一接收单元,用于接收上传端所发送的业务逻辑数据;其中,所述业务逻辑数据用于对业务数据进行运算;
加密打包单元,用于将所述业务逻辑数据通过调用预先配置的加密动态链接库以加密打包成JAR包,将所述JAR包的接口文件进行暴露;
解密单元,用于通过预先配置的JNI接口调用所述接口文件及预先配置的解密动态链接库,由所述解密动态链接库对所述接口文件进行解密,以得到与所述JAR包对应的解密数据;
接口获取单元,用于加载预先构建的第一函数以将所述解密数据还原成class对象,将所述class对象作为所述JAR包对应的当前接口;其中,所述第一函数用于对数据进行Java反序列化;
第二接收单元,用于若检测到当前接口调用指令,接收发送端所上传的当前待计算业务数据,将所述当前待计算业务数据输入至所述当前接口进行计算,以得到计算结果;以及
结果发送单元,用于将所述计算结果发送至所述发送端。
8.根据权利要求7所述的软件包文件数据处理装置,其特征在于,还包括:
第一配置单元,用于配置用于对数据进行加密的加密动态链接库,及用于对数据进行解密的解密动态链接库;
第二配置单元,用于配置用于与加密动态链接库及解密动态链接库进行交互的JNI接口。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至6中任一项所述的软件包文件数据处理方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至6任一项所述的软件包文件数据处理方法。
CN201910969948.0A 2019-10-12 2019-10-12 软件包文件数据处理方法、装置、计算机设备及存储介质 Pending CN111078224A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910969948.0A CN111078224A (zh) 2019-10-12 2019-10-12 软件包文件数据处理方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910969948.0A CN111078224A (zh) 2019-10-12 2019-10-12 软件包文件数据处理方法、装置、计算机设备及存储介质

Publications (1)

Publication Number Publication Date
CN111078224A true CN111078224A (zh) 2020-04-28

Family

ID=70310289

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910969948.0A Pending CN111078224A (zh) 2019-10-12 2019-10-12 软件包文件数据处理方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN111078224A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113504896A (zh) * 2021-07-12 2021-10-15 云南腾云信息产业有限公司 一种应用程序的业务数据处理方法、装置及移动终端
CN115114595A (zh) * 2022-08-29 2022-09-27 北京中安星云软件技术有限公司 一种基于JNI运行Java加密jar包的方法及系统

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104504311A (zh) * 2015-01-19 2015-04-08 炫彩互动网络科技有限公司 一种安全的sdk制作和运行方法
CN105426777A (zh) * 2015-11-17 2016-03-23 中科创达软件股份有限公司 一种动态链接库文件加密、解密方法及装置
CN106372465A (zh) * 2016-08-30 2017-02-01 北京深思数盾科技股份有限公司 一种动态链接库安全管理方法、系统和电子设备
CN106650342A (zh) * 2016-11-29 2017-05-10 北京握奇智能科技有限公司 一种Jar包加固方法及系统
CN108898007A (zh) * 2018-06-26 2018-11-27 焦点科技股份有限公司 一种基于JavaAgent和dll增强Java分发软件的安全方法
CN110069905A (zh) * 2019-04-26 2019-07-30 深圳智慧园区信息技术有限公司 一种Springboot程序加密和解密的装置及方法
CN110210188A (zh) * 2019-06-04 2019-09-06 武汉神算云信息科技有限责任公司 Spring框架下代码加密方法、装置、设备及存储介质
CN110309630A (zh) * 2019-06-28 2019-10-08 南京冰鉴信息科技有限公司 一种Java代码加密方法及装置

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104504311A (zh) * 2015-01-19 2015-04-08 炫彩互动网络科技有限公司 一种安全的sdk制作和运行方法
CN105426777A (zh) * 2015-11-17 2016-03-23 中科创达软件股份有限公司 一种动态链接库文件加密、解密方法及装置
CN106372465A (zh) * 2016-08-30 2017-02-01 北京深思数盾科技股份有限公司 一种动态链接库安全管理方法、系统和电子设备
CN106650342A (zh) * 2016-11-29 2017-05-10 北京握奇智能科技有限公司 一种Jar包加固方法及系统
CN108898007A (zh) * 2018-06-26 2018-11-27 焦点科技股份有限公司 一种基于JavaAgent和dll增强Java分发软件的安全方法
CN110069905A (zh) * 2019-04-26 2019-07-30 深圳智慧园区信息技术有限公司 一种Springboot程序加密和解密的装置及方法
CN110210188A (zh) * 2019-06-04 2019-09-06 武汉神算云信息科技有限责任公司 Spring框架下代码加密方法、装置、设备及存储介质
CN110309630A (zh) * 2019-06-28 2019-10-08 南京冰鉴信息科技有限公司 一种Java代码加密方法及装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
关晨至等: "利用CryptoAPI实现AES加密解密程序设计", 《电脑编程技巧与维护》, pages 82 - 84 *
吴洪贵 等: "物联网应用系统开发", 30 November 2012, 东软电子出版社, pages: 142 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113504896A (zh) * 2021-07-12 2021-10-15 云南腾云信息产业有限公司 一种应用程序的业务数据处理方法、装置及移动终端
CN113504896B (zh) * 2021-07-12 2023-08-18 云南腾云信息产业有限公司 一种应用程序的业务数据处理方法、装置及移动终端
CN115114595A (zh) * 2022-08-29 2022-09-27 北京中安星云软件技术有限公司 一种基于JNI运行Java加密jar包的方法及系统

Similar Documents

Publication Publication Date Title
KR102447251B1 (ko) 실링 엔클레이브로써의 데이터 실링해제
KR102467687B1 (ko) 크로스-플랫폼 엔클레이브 신원
KR102510273B1 (ko) 실링 엔클레이브로써의 데이터 실링
CN110214324B (zh) 密钥保管库包围区
KR102466793B1 (ko) 추상적 엔클레이브 신원
US8719590B1 (en) Secure processing in multi-tenant cloud infrastructure
EP3574441B1 (en) Enclave abstraction model
US9501646B2 (en) Program verification apparatus, program verification method, and computer readable medium
US7970133B2 (en) System and method for secure and flexible key schedule generation
US8958548B2 (en) Generation of relative prime numbers for use in cryptography
US9619658B2 (en) Homomorphically encrypted one instruction computation systems and methods
CN116070216A (zh) 从属包围区二进制文件
CN110214321B (zh) 嵌套包围区身份
CN110826031A (zh) 加密方法、装置、计算机设备及存储介质
CN111656345A (zh) 启用容器文件中加密的软件模块
CN114547558B (zh) 授权方法、授权控制方法及装置、设备和介质
CN111078224A (zh) 软件包文件数据处理方法、装置、计算机设备及存储介质
US11777708B2 (en) Secure encryption of partial blocks
CN114048266A (zh) 数据库数据的同步方法、装置和计算机可读存储介质
CN117313046A (zh) 一种代码加固方法、代码加载方法、设备及介质
CN112115430A (zh) 一种apk的加固方法、电子设备及存储介质
CN112182518A (zh) 一种软件部署方法和装置
CN111831978A (zh) 一种对配置文件进行保护的方法及装置
US20230300120A1 (en) System and method for lattice-based cryptography
WO2024164625A1 (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