CN111142876B - 一种编译处理方法、装置和用于编译处理的装置 - Google Patents
一种编译处理方法、装置和用于编译处理的装置 Download PDFInfo
- Publication number
- CN111142876B CN111142876B CN202010256341.0A CN202010256341A CN111142876B CN 111142876 B CN111142876 B CN 111142876B CN 202010256341 A CN202010256341 A CN 202010256341A CN 111142876 B CN111142876 B CN 111142876B
- Authority
- CN
- China
- Prior art keywords
- language
- source code
- code
- ciphertext
- custom
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本申请实施例提供一种编译处理方法、装置和用于编译处理的装置。其中的方法包括:获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。本申请实施例可以对不同编程语言实现的密文处理源码进行编译,使得密文处理系统可以支持任意的编程语言,增强了系统的可扩展性,并且可以减少再次开发的成本。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种编译处理方法、装置和用于编译处理的装置。
背景技术
数据处理包括:数据清洗、数据分析、数据存储等,其中,数据分析中广泛使用的机器学习(Machine Learning,ML)、深度学习(Deep Learning,DL)是人工智能(ArtificialIntelligence,AI)的一个分支,是实现人工智能的一个途径,即以机器学习为手段解决人工智能中的问题。机器学习广泛应用于数据挖掘、计算机视觉、自然语言处理、生物特征识别、搜索引擎、医学诊断、信用卡欺骗检测、语音识别与手写识别、人脸识别、图像识别、文字识别、智能监控、机器人等多种领域,推动了人工智能的蓬勃发展。另外,在数据存储中,广泛使用的SQL(Structured Query Language,结构化查询语言)中也涉及到较多的数据相关操作。
密文处理即可以基于数据的密文实现数据的清洗、计算、分析、模型训练、存储、数据库查询等数据相关操作,在操作过程中不暴露数据的明文,可以保护数据的隐私安全。
一个密文处理系统一般都支持一种固定的编程语言,若要使得支持其他编程语言需要重新编写一套系统架构,不但提高了再次开发的成本,也导致密文处理系统的扩展性较低。
发明内容
本申请实施例提供一种编译处理方法、装置和用于编译处理的装置,可以对不同编程语言实现的密文处理源码进行编译,使得密文处理系统可以支持任意的编程语言,增强了系统的可扩展性,并且可以减少再次开发的成本。
为了解决上述问题,本申请实施例公开了一种编译处理方法,所述方法适用于密文数据处理算法的不同编程语言实现,所述方法包括:
获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
另一方面,本申请实施例公开了一种编译处理装置,所述装置适用于密文数据处理算法的不同编程语言实现,所述装置包括:
获取模块,用于获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
编译模块,用于根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
再一方面,本申请实施例公开了一种用于编译处理的装置,所述装置适用于密文数据处理算法的不同编程语言实现,包括有存储器,以及一个或者一个以上程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
又一方面,本申请实施例公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如前述一个或多个所述的编译处理方法。
本申请实施例包括以下优点:
本申请实施例可以获取基于第一编程语言的密文处理源码,根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的自定义语言对应的中间语言码。其中,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中。本申请实施例的自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。因此,本申请实施例可以将基于不同的第一编程语言的密文处理源码统一转换为支持隐私操作的自定义语言对应的中间语言码,使得中间语言码可以实现基于密文的隐私操作,可以保证数据的隐私安全。
此外,本申请实施例将密文处理源码统一转换为支持隐私操作的自定义语言对应的中间语言码,使得密文处理系统前端不受限于第一编程语言,增强了系统的可扩展性,并且可以减少再次开发的成本。
再者,本申请实施例将密文处理源码统一转换为支持隐私操作的自定义语言对应的中间语言码,使得中间语言码的执行不受限于第一编程语言的运行环境,可以将第一编程语言为主导的运行环境,转换为以第二编程语言为主导的运行环境。由此,执行器在执行中间语言码的过程中,可以减少在第一编程语言运行环境和第二编程语言运行环境之间切换的次数,可以极大地减少系统的延时。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是本申请的一种编译处理方法实施例的步骤流程图;
图2是一种多方安全计算系统的架构示意图;
图3是另一种多方安全计算系统的架构示意图;
图4是本申请的一种抽象语法树的示意图;
图5是本申请的一种编译处理装置实施例的结构框图;
图6是本申请的一种用于编译处理的装置800的框图;及
图7是本申请的一些实施例中服务器的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
一般密文处理系统包括前端和后端,前端用于实现密文处理的系统框架,后端用于实现基于密文的数据相关操作。由于密文数据处理效率相较于明文数据处理效率较低,因此,为提升密文数据处理效率,通常后端会固定采用类似C/C++,Rust,Go等一种相对执行效率较高的语言实现,那么目前的密文处理系统至少存在如下问题:
在密文处理系统后端采用的编程语言固定的情况下,若前端采用与后端编程语言相配合的一种编程语言如Python语言,将使得该系统无法支持其他编程语言,为了支持其他编程语言(如R语言或Java语言等),不得不使用其他编程语言(如R语言或Java语言等)重新编写一套前端的系统框架,导致密文处理系统的扩展性较低,以及再次开发的成本较高。
密文处理平台(例如,基于多方安全计算的数据交易平台)用于使多方数据在保证不泄露明文的情况下实现安全的融合,从而解决数据孤岛问题。如果密文处理平台中运行的密文处理系统前端仅支持一种固定的编程语言,那么无疑会对该平台的应用造成限制。
目前,在机器学习(ML)、深度学习(DL)、人工智能(AI)等领域,为了使用户方便使用训练好的模型,出现多种编程语言实现的ML、DL、AI等的框架。比如基于Python编程语言的Tensorflow、Pytorch、Keras、MxNet以及caffe等框架;基于Java编程语言的Deeplearning4j;基于纯C语言实现的SVM light以及C++实现的Libsvm++;基于R编程语言的Caret框架等等。当然,除了上述领域外,例如数据存储、查询等操作也存在着大量其他编程语言实现的框架。如果一个密文处理系统的前端仅支持一种编程语言将无法支持其他编程语言的实现,局限了平台的使用场景。如果再写一套基于其他编程语言(R或者Java)的前端框架,同时使用其他编程语言的运行环境(R虚拟机、Java虚拟机),将会大大增加研发成本。
为解决上述问题,本申请提供如下方案。
方法实施例
参照图1,示出了本申请的一种编译处理方法实施例的步骤流程图,所述方法适用于密文数据处理算法的不同编程语言实现,具体可以包括如下步骤:
步骤101、获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
步骤102、根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
本申请实施例可用于对不同编程语言编写的密文处理源码进行编译,并统一转换为自定义语言的中间语言码进行执行。所述密文处理源码可以包括基于第一编程语言的系统框架,以及基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中。
需要说明的是,在本申请实施例中,第一编程语言和第二编程语言中的“第一”和“第二”仅用于区分密文处理系统的前端框架和后端隐私操作可以基于不同编程语言实现,并不表示具体的编程语言种类。
其中,密文处理源码指编程语言源码。即密文处理系统针对密文数据进行数据处理的程序源码。所述密文处理包括但不限于:基于密文实现数据的清洗、计算、分析、模型训练、存储、数据库查询等数据相关操作。需要说明的,本申请实施例对密文处理的具体类型不加以限制。所述密文处理系统可以通过不同编程语言实现,可基于密文数据处理算法对密文数据进行隐私操作,例如所述密文处理系统可以为多方安全计算系统。
其中,所述隐私操作指基于密文对数据进行的操作,所述隐私操作可以通过基于密文的数据处理算法实现,所述数据处理算法可以包括数据计算、模型训练、数据库查询等算法。在对数据的隐私操作过程中,数据以密文形式存在,不会暴露数据的明文。可选地,所述隐私操作可以包括如下任意一项或多项:基于密文的计算操作、基于密文的模型训练、基于密文的数据库查询操作等。
例如,所述隐私操作可以包括:对数据密文进行加、减、乘、除、求平均等计算操作,对数据密文进行比较操作,利用数据密文进行机器学习、人工智能等模型训练及预测,对数据密文进行数据库查询操作等。
需要说明的是,所述隐私操作可以通过调用多方安全计算引擎来实现。所述多方安全计算引擎可以提供多方安全计算服务,多方安全计算为基于密文的计算,参与计算的数据包含密文数据,且计算过程中产生的中间结果以及最终的计算结果也为密文数据。在基于密文的计算过程中,不会暴露数据明文,可以保证数据的隐私安全性。
所述计算用于对密文数据进行数据处理。在一些示例中,所述密文数据为一种私有数据,技术人员预先将包含处理私有数据的业务逻辑的程序存储在任务管理平台中,所述业务逻辑是藉由计算机程序语言来描述对私有数据的处理过程,该处理过程可包含一个或多个计算任务。所述业务逻辑是指技术人员利用一个或多个计算任务对包含私有数据进行数据处理、且依据自然规律而得到的流程。例如,一种业务逻辑包括:在不知道各企业信用评分值明文的情况下,将多个已经按照信用等级评分进行排序的一组企业与另一组已经按照信用等级评分排序的企业进行合并,且合并过程直接完成排序。另一种业务逻辑包括:在不知道各用户还款能力评分明文的情况下,将多个已按照还款能力评分进行排序的一组用户与另一组已经按照还款能力评分排序的用户进行合并,且合并过程直接完成排序。
在本申请的一种可选实施例中,所述密文处理可以包括利用机器学习网络进行机器学习模型的训练。例如,一种业务逻辑包括:在不知道多个汽车企业提供的车况数据明文的情况下,利用多个汽车企业提供的车况数据密文,训练汽车安全评测模型。另一种业务逻辑包括:在不知道多个银行提供的用户还款能力评分明文的情况下,利用多个银行提供的用户还款能力评分密文,训练贷款风控模型。本申请的方案适用于基于密文的任何隐私操作场景。
可选地,所述机器学习网络包括前端和后端,所述后端包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述机器学习网络的源码中。
机器学习(Machine Learning,ML)是一种实现人工智能(ArtificialIntelligence,AI)的方法,机器学习是用大量的数据进行“训练”,通过各种算法从数据中学习如何完成任务。深度学习(Deep Learning,DL)是一种实现机器学习的技术,是利用深度神经网络来解决特征表达的一种学习过程。
在本申请实施例中,密文处理源码可以为机器学习网络的源码,所述机器学习网络的前端可以包括机器学习网络的框架,前端基于第一编程语言实现。机器学习网络的后端可以包括需要调用实现隐私操作的应用程序接口(API),隐私操作基于第二编程语言实现,隐私操作以动态库形式包含在所述机器学习网络的源码中。当然,所述密文处理还可以包括人工智能算法(AI)模型、深度学习(DL)模型,本申请实施例以机器学习(ML)模型为例进行说明。
其中,第一编程语言可以为一种模型编程语言,模型编程语言指用于机器学习、深度学习以及人工智能算法实现的编程语言。例如,所述第一编程语言可以包括Python语言、Java语言、C语言、R语言等。基于第一编程语言可以实现机器学习、深度学习以及人工智能等模型的框架。例如,基于Python语言实现的Tensorflow、Pytorch、Keras、MxNet以及caffe等框架;基于Java语言实现的Deeplearning4j框架;基于C语言实现的SVM light框架;基于C++语言实现的Libsvm++框架;基于R语言实现的Caret框架等。
其中,Python语言以其简单易用、高开发效率、跨平台等特点,在机器学习、人工智能等领域得到广泛使用。但是Python语言也有自身的缺点,就是运行速度较慢。在多方安全计算引擎的隐私操作过程中,至少需要两个计算节点参与计算,并且至少两个计算节点之间需要进行通信,多次通信也极大影响隐私操作的执行效率。因此,本申请实施例的隐私操作部分可以基于C++语言来实现,相对于Python语言,可以极大地提高隐私操作的运行速度,进而可以提高密文处理的处理效率。
需要说明的是,为便于描述,本申请实施例中均以第一编程语言为Python语言,第二编程语言为C++语言为例进行说明。在实际应用中,本申请实施例对第一编程语言和第二编程语言的语言种类均不加以限制。例如,所述第一编程语言可以包括:Python语言、Java语言、C语言、R语言等。所述第二编程语言可以包括:C/C++语言、Go语言、Rust语言等。所述第一编程语言和第二编程语言可以为不同的编程语言。
在本申请实施例中,密文处理系统可以为包括基于Python语言的前端算法实现,以及基于C++语言的安全协议实现两部分的多方安全计算系统。其中,基于C++语言的安全协议部分用于实现密文的隐私操作,如基于密文的计算操作、基于密文的模型训练、基于密文的数据库查询操作等。参照图2,示出了一种多方安全计算系统的架构示意图。
如图2所示,该多方安全计算系统架构200包括前端和后端,前端包括应用程序编程接口201和Python虚拟机202,后端包括基于C++语言实现的多方安全计算引擎203。需要说明的是,该多方安全计算系统架构200中还包括图2未示出的Python分析器和Python优化器等模块。
本申请实施例通过多方安全计算内部的wrapper(封装)机制,将实现隐私操作的模块,以动态库的形式包含到前端的Python算法实现中,可以为前端算法的实现提供基础的API(Application Programming Interface,应用程序编程接口)。程序在运行时,Python虚拟机按字节码的顺序执行Python源码,当遇到由C++提供的函数实现时(通过call_function指令调用),将该函数定位到导入的动态库中,并通过入栈、出栈等操作,完成C++函数的调用,以实现隐私操作指令。C++函数实现完成后,再返回到Python虚拟机中,继续执行Python的字节码指令。
通过图2所示的多方安全计算系统架构,可以在数据处理过程中,基于多方安全计算引擎203实现数据的隐私操作,保护数据的隐私安全。可选地,所述多方安全计算系统可用于基于多方数据的密文训练机器学习模型,由此可以实现在保证数据隐私安全的基础上,利用海量多维数据进行高效地机器学习,以提高模型预测精准度。
然而,图2所示的架构,以Python语言为主,将C++语言实现的隐私操作以动态库的形式包含到Python语言的代码中,可能存在如下问题:Python虚拟机按字节码的顺序执行Python源码时,执行到基于密文的隐私操作时,几乎每条Python代码,都需要调用C++的动态库,也即需要涉及到多次跟C++运行环境的交互。这样,Python虚拟机在运行时,需要经过从Python运行环境到C++运行环境,再从C++运行环境到Python运行环境的多次跳转过程,从而增加了系统的延时。
为解决上述问题,本申请实施例实现了一种多语言编译器,同时定义了中间层自定义语言,用以将不同第一编程语言实现的密文处理源码,如不同第一编程语言实现的机器学习、深度学习以及人工智能等模型源码,统一转化为中间语言码,再将中间语言码与多方安全计算系统的后端结合,实现基于多方安全计算的系统架构。参照图3,示出了另一种多方安全计算系统的架构示意图。如图3所示,该多方安全计算系统架构300包括前端和后端,前端包括不同第一编程语言支持的应用程序编程接口301和多语言编译器302,多语言编译器302用于将不同第一编程语言的密文处理源码转换为中间语言码303。后端包括基于第二编程语言实现的多方安全计算引擎304。
图3所示的多方安全计算系统架构300的前端可以采用任意第一编程语言,如Python语言、Java语言、R语言、C语言等。该架构的后端可以采用任意第二编程语言,如C/C++语言、Go语言、Rust语言等。优选地,本申请实施例中采用C++语言实现后端的隐私操作。
在本申请实施例中,所述多语言编译器可以融合多种第一编程语言的解释器(Parser),以支持对不同第一编程语言实现的密文处理源码进行编译。例如,如果密文处理源码基于Python语言实现,则多语言编译器可以利用Python语言的Parser对密文处理源码进行编译;如果密文处理源码基于Java语言实现,则多语言编译器可以利用Java语言的Parser对密文处理源码进行编译等。
可选地,所述自定义语言可以是伪汇编语言。所述自定义语言中可以包括自定义操作码,所述自定义操作码用于支持所述密文处理源码中的隐私操作。
在本申请实施例的一个示例中,如下代码清单1示出了第一编程语言为Python语言的密文处理源码中的部分代码:
1 import privpy as pp
2 import sys
3 import os
4 sys.path.append(os.getcwd() + '/privpy_lib')
5 import pnumpy as pnp
6 import psql as psq
7 import numpy as np
8 table = pnp.reshape(pp.ss("golda"), (10000,4))
9 colm0,colm1,colm2,colm3= table.trans()
10#colm0,colm1,colm2,colm3=np.load("original.npz") 11
12 conj0 = (colm3==5152)
13 conj1 = (colm2<=3948)
14 conj2 = (colm2>=3946)
15 conj3 = ( 1 - (1 - (colm0<20181031)) * (1 - ((colm0==20181031)*(colm1<=95838463))))
16 conj4 = ( 1 - (1 - (colm0>20181031)) * (1 - ((colm0==20181031)*(colm1>=95327897))))
17 conjs0 =conj0*conj1*conj2*conj3*conj4
18 colm5= psq.sum(colm2,1)
19
20 colm5 = pp.farr([colm5])
21 pp.reveal(colm5, "a3")
在该示例中,前端基于Python语言实现,后端包括基于C++语言实现的隐私操作,所述隐私操作以动态库形式包含在前端源码中。
在代码清单1中,第12行至第20行(除第19行的空行外)的每一行代码均包含隐私计算。例如,第12行表示对操作数colm3和5152进行基于密文的比较相等的操作,判断二者是否相等,并且将比较结果赋值给操作数conj0。在具体实现中,操作数colm3可以为一个密文数据,而5152为一个常量,因此在比较之前可以对常量5152进行转换,得到密文数据,再对操作数colm3和常量5152对应的密文数据基于密文比较二者是否相等。
当前端的Python虚拟机执行到第12行代码中的“==”时,由于“==”为基于密文的比较相等操作,而密文操作需要调用动态库中的C++函数来实现,因此,Python虚拟机需要从Python运行环境跳转到C++运行环境,以执行操作数colm3和5152基于密文的比较相等操作。在比较相等的操作执行完成得到比较结果之后,Python虚拟机需要从C++运行环境跳转到Python运行环境,继续执行下一个字节码。可以看出,从第12行至第20行(除第19行的空行外),每一行都需要在Python运行环境和C++运行环境之间进行切换,增加了系统的延时。
本申请实施例利用所述多语言编译器,根据第一编程语言(Python语言)的语法规则以及自定义语言,将上述代码清单1中第一编程语言的源码转换为中间语言码,得到如下代码清单2(仅示出了对代码清单1中第12行至第20代码的转换结果):
29 ----------------Line12----------------
30 Eq IR12 colm3 5152
31 ASSIGN conj0 IR12
32 ----------------Line13----------------
33 LtE IR13 colm2 3948
34 ASSIGN conj1 IR13
35 ----------------Line14----------------
36 GtE IR14 colm2 3946
37 ASSIGN conj2 IR14
38 ----------------Line15----------------
39 Lt IR15-0 colm0 20181031
40 Sub IR15-1 1 IR15-0
41 Eq IR15-2 colm0 20181031
42 LtE IR15-3 colm1 95838463
43 Mult IR15-4 IR15-2 IR15-3
44 Sub IR15-5 1 IR15-4
45 Mult IR15-6 IR15-1 IR15-5
46 Sub IR15-7 1 IR15-6
47 ASSIGN conj3 IR15-7
48 ----------------Line16----------------
49 Gt IR16-0 colm0 20181031
50 Sub IR16-1 1 IR16-0
51 Eq IR16-2 colm0 20181031
52 GtE IR16-3 colm1 95327897
53 Mult IR16-4 IR16-2 IR16-3
54 Sub IR16-5 1 IR16-4
55 Mult IR16-6 IR16-1 IR16-5
56 Sub IR16-7 1 IR16-6
57 ASSIGN conj4 IR16-7
58 ----------------Line17----------------
59 Mult IR17-1 conj0 conj1
60 Mult IR17-2 IR17-1 3
61 ASSIGN conjs0 IR17-2
62 ----------------Line18----------------
63 Load IR18-0 colm2
64 CONDITION IR18-1 1
65 Call psq_sum IR18
66 ASSIGN IR18
67 ----------------Line19----------------
68 Load IR19-1 [colm5]
69 Call pp_farr IR19
70 ASSIGN IR19
71 ----------------Line20----------------
72 Call IR20
其中,以“----------------Line*----------------”标注的行为注释行。例如,在代码清单2中,第30行和31行为对代码清单1中第12行代码转换得到的中间语言码。
本申请实施例的自定义语言中包括自定义操作码,所述自定义操作码可用于支持密文处理源码中的隐私操作。所述自定义操作码可以包括比较操作,如比较相等(Eq)、比较小于等于(LtE)、比较大于等于(GtE)、比较小于(Lt)、比较大于(Gt)。所述自定义操作码还可以包括加(Add)、减(Sub)、乘(Mult)、除(Div)、求平均(Avg)等计算操作、以及赋值操作(ASSIGN)等。
例如,在代码清单1,“==”为基于密文的比较相等操作,用于比较两个密文的操作数是否相等,本申请实施例可以将代码清单1中的“==”转换为自定义操作码“Eq”。
在本申请实施例中,自定义了中间语言码的语法格式。如代码清单2所示,第一列表示本申请实施例的自定义操作码,第三列和第四列表示操作码涉及到的操作数,第二列表示对操作数通过自定义操作码的计算得到的返回值。
需要说明的是,对于多个操作数的计算,本申请实施例可以先转换为两个操作数的计算,并且定义中间变量,通过虚拟寄存器(IR)的模式将两个操作数的计算结果赋值给中间变量,再对中间变量存储的计算结果与下一个操作数进行计算。例如代码清单2中的IR17和IR19表示通过虚拟寄存器存储的中间变量。
将密文处理源码转换为支持所述隐私操作的自定义语言对应的中间语言码之后,可以执行所述中间语言码。由此,对于密文处理系统,可以不受限于前端的第一编程语言,通过本申请实施例的多语言编译器,将不同第一编程语言实现的密文处理源码统一转换成为中间语言码,增强了密文处理系统的可扩展性,并且可以减少再次开发的成本。
在本申请的一种可选实施例中,所述执行所述中间语言码,具体可以包括:将所述中间语言码输入所述中间语言码对应的执行器,通过所述执行器执行所述中间语言码,所述执行器基于所述第二编程语言的应用编程接口所实现。
将基于第一编程语言的密文处理源码转换为中间语言码之后,可以通过执行器执行所述中间语言码。后端的隐私操作仍然以动态库形式包含在中间语言码中,所述隐私操作基于第二编程语言(如C++语言)实现,通过该执行器可以实现对C++代码的调用。例如,中间语言码中基于密文的加法操作可以用自定义操作码“Add”来表示,当执行器执行到“Add”时,通过调用动态库中C++实现的加法“addv”来执行中间语言码中的“Add”。其中,“addv”指基于多方安全计算协议实现的密文下的加法运算。
需要说明的是,所述执行器调用的C++代码,可以是基于秘密分享协议的C++实现,也可以是基于同态加密的C++实现,还可以是SGX(Intel Software Guard Extensions)的C++实现。其中,SGX是可信执行环境(Trusted Execution Environment)的一种Intel(英特尔)的实现方式,是英特尔指令集架构的一个扩展。可以理解,本申请实施例对后端隐私操作包含的实现方式不加以限制。
可选地,所述执行器可以基于所述第二编程语言的应用编程接口(API)所实现。例如,所述执行器可以是基于底层C++语言提供的API实现的,所述执行器可运行在C++的运行环境中,也即,本申请实施例将以第一编程语言(Python语言)虚拟机为主导的运行环境,转换为以第二编程语言(C++语言)为主导的运行环境。由此,执行器在执行中间语言码的过程中,即使要调用C++代码,也是在C++的运行环境中进行调用,而不用在第一编程语言(Python语言)的运行环境和第二编程语言(C++语言)的运行环境之间频繁切换,可以极大地减少实现隐私操作的延时。
在本申请的一种可选实施例中,所述根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,具体可以包括:
步骤S11、根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树;
步骤S12、根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码。
AST (Abstract Syntax Tree,抽象语法树)是用编程语言编写的源代码的抽象语法结构的树表示。树的每个节点表示在源代码中出现的语法结构,语法是“抽象的”,因为它不代表真实语法中出现的每个细节,而只是结构。
抽象语法树不依赖于具体的语法,也不依赖于语言的细节。因此,本申请实施例在前端使用多语言编译器对不同第一编程语言的密文处理源码进行词法分析和语法分析后,产生抽象语法树,并根据抽象语法树生成中间语言码作为输出,输入到执行器中执行。
在本申请实施例中,所述多语言编译器可以融合多种编程语言的解释器(Parser)和AST生成器,用于将多种不同编程语言实现的密文处理源码转换为所述密文处理源码对应的抽象语法树。例如,所述多语言编译器可以包括Python的Parser以及AST生成器,对于基于Python语言实现的密文处理源码,多语言编译器可以通过Python的Parser以及AST生成器,根据Python语言的语法规则,对该密文处理源码进行语法分析,并且将该密文处理源码转换为抽象语法树。又如,所述多语言编译器还可以包括Java的Parser以及AST生成器,对于基于Java语言实现的密文处理源码,多语言编译器可以通过Java的Parser以及AST生成器,根据Java语言的语法规则,对所述密文处理源码进行语法分析,并且将密文处理源码转换为抽象语法树。
接下来,根据本申请实施例自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的自定义语言对应的中间语言码。中间语言码可以与底层的多方安全计算引擎中的隐私算法、以及SGX中密文计算的算法等一一对应,从而实现在C++底层实现基于密文的隐私计算。
在本申请的一种可选实施例中,所述根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树,具体可以包括:
步骤S21、对所述密文处理源码进行序列化处理,将所述密文处理源码从字符流转换为令牌流;
步骤S22、根据所述第一编程语言的第一语法规则,对所述令牌流进行语法分析,将所述令牌流转换为抽象语法树。
将密文处理源码转换为抽象语法树主要包括词法分析和语法分析两个阶段。具体地,将密文处理源码以字符串的形式输入到本申请实施例的多语言编译器,在词法分析阶段,所述多语言编译器通过所述第一编程语言的Parser对所述密文处理源码进行序列化处理,对源码中的所有字符进行词法分析,将字符串形式的密文处理源码转换为令牌(Token)流。其中,Token可以包括如下结构:关键字、自定义的名称(如方法名、变量名等)、运算符或者逻辑运算符等。
在语法分析阶段,所述多语言编译器通过第一编程语言的AST生成器,根据所述第一编程语言的第一语法规则,对所述令牌流进行语法分析,将令牌流转换成抽象语法树(AST)的结构。AST的每一个节点表示密文处理源码中的一个语法结构, 如包、类型、修饰符、运算符、接口、返回值都可以是一个语法结构。
在本申请的一个示例中,以代码清单1中第12行和第13行两行源码为例,说明本申请实施例生成抽象语法树的过程。代码清单1中第12行和第13行两行源码为:conj0 =(colm3==5152) 和conj1 = (colm2<=3948),以字符串形式输入多语言编译器之后,首先经过序列化处理,得到这两行源码包含的令牌(token),将这两行源码对应的字符流转换为如下令牌流:‘conj0’, ‘=’, ‘colm3’, ‘==’, ‘5152’, ‘conj1’, ‘=’, ‘colm2’, ‘<=’,‘3948’。然后,根据第一编程语言(Python语言)的第一语法规则,对所述令牌流进行语法分析,将所述令牌流转换为抽象语法树,如图4所示。需要说明的是,图4仅示出了抽象语法树中第12行和第13行两行源码对应的部分。通过上述方法,可以将代码清单1中的密文处理源码转换为该密文处理源码对应的完整的抽象语法树。
在本申请的一种可选实施例中,所述根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码,具体可以包括:
步骤S31、从所述抽象语法树的根节点开始遍历所述抽象语法树的各节点,根据所述第一语法规则,对所述各节点进行语法分析,确定所述各节点对应的第一语法结构;
步骤S32、根据所述各节点对应的第一语法结构,以及所述第一语法规则与所述第二语法规则之间的对应关系,将所述各节点对应的第一语法结构转换为第二语法结构,生成符合所述第二语法规则的中间语言码。
在构建密文处理源码的抽象语法树(AST)之后,可以对AST进行语法分析。具体地,从AST的根节点(root节点)开始遍历AST的各节点,根据所述第一语法规则,对所述各节点进行语法分析。例如,以root节点开始进行语法分析,然后对root节点的左、右子节点分别进行语法分析,再对左、右子节点的子节点进行语法分析,通过递归的方法,遍历AST中的所有节点,直到所有节点遍历完成,可以得到每个节点对应的第一语法结构。
其中,第一语法结构为基于第一编程语言的密文处理源码的语法结构。所述第一语法结构可以包括操作符、操作数、函数、关键字等,所述第一语法结构符合第一编程语言的第一语法规则。
本申请实施例根据所述AST中各节点对应的第一语法结构,以及所述第一语法规则与所述第二语法规则之间的对应关系,将所述各节点对应的第一语法结构转换为第二语法结构,生成符合所述第二语法规则的中间语言码。其中,第一语法规则为第一编程语言的语法规则,第二语法规则为本申请实施例的自定义语言的语法规则。本申请实施例根据第一语法规则和第二语法规则之间的对应关系,将各节点对应的第一语法结构转换为第二语法结构。例如,第一语法规则中基于密文的赋值“=”以及比较相等“==”的隐私操作,本申请实施例分别转换为自定义操作码“ASSIGN”和“Eq”的隐私操作。自定义操作码“ASSIGN”表示基于密文的赋值操作,自定义操作码“Eq”表示基于密文的比较相等操作。自定义操作码实现的隐私操作可以通过调用动态库中C++的隐私算法来实现。
在AST的所有节点遍历完成之后,可以从最底端的叶子节点开始,从下向上通过递归的方式对各节点进行转换,将各节点对应的第一语法结构转换为第二语法结构,在root节点转换完成之后,即可得到密文处理源码对应的中间语言码。
综上,本申请实施例可以获取基于第一编程语言的密文处理源码,根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的自定义语言对应的中间语言码。其中,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中。本申请实施例的自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。因此,本申请实施例可以将基于不同的第一编程语言的密文处理源码统一转换为支持隐私操作的自定义语言对应的中间语言码,使得中间语言码可以实现基于密文的隐私操作,可以保证数据的隐私安全。
此外,本申请实施例将密文处理源码统一转换为支持隐私操作的自定义语言对应的中间语言码,使得密文处理系统前端不受限于第一编程语言,增强了系统的可扩展性,并且可以减少再次开发的成本。
再者,本申请实施例将密文处理源码统一转换为支持隐私操作的自定义语言对应的中间语言码,使得中间语言码的执行不受限于第一编程语言的运行环境,可以将第一编程语言为主导的运行环境,转换为以第二编程语言为主导的运行环境。由此,执行器在执行中间语言码的过程中,可以减少在第一编程语言运行环境和第二编程语言运行环境之间切换的次数,可以极大地减少系统的延时。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
装置实施例
参照图5,示出了本申请的一种编译处理装置实施例的结构框图,所述装置适用于密文数据处理算法的不同编程语言实现,所述装置具体可以包括:
获取模块501,用于获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
编译模块502,用于根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
可选地,所述编译模块502,可以包括:
第一转换子模块,用于根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树;
第二转换子模块,用于根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码。
可选地,所述第一转换子模块,可以包括:
第一转换单元,用于对所述密文处理源码进行序列化处理,将所述密文处理源码从字符流转换为令牌流;
第二转换单元,用于根据所述第一编程语言的第一语法规则,对所述令牌流进行语法分析,将所述令牌流转换为抽象语法树。
可选地,所述第二转换子模块,可以包括:
语法分析单元,用于从所述抽象语法树的根节点开始遍历所述抽象语法树的各节点,根据所述第一语法规则,对所述各节点进行语法分析,确定所述各节点对应的第一语法结构;
语法转换单元,用于根据所述各节点对应的第一语法结构,以及所述第一语法规则与所述第二语法规则之间的对应关系,将所述各节点对应的第一语法结构转换为第二语法结构,生成符合所述第二语法规则的中间语言码。
可选地,所述装置还可以包括:执行模块503,具体用于将所述中间语言码输入所述中间语言码对应的执行器,通过所述执行器执行所述中间语言码,所述执行器基于所述第二编程语言的应用编程接口所实现。
可选地,所述隐私操作包括如下任意一项或多项:基于密文的计算操作、基于密文的模型训练、基于密文的数据库查询操作。
可选地,所述密文处理包括利用机器学习网络进行机器学习模型的训练,所述机器学习网络包括前端和后端,所述后端包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述机器学习网络的源码中。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
本申请实施例提供了一种用于编译处理的装置,所述装置适用于密文数据处理算法的不同编程语言实现,包括有存储器,以及一个或者一个以上程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
图6是根据一示例性实施例示出的一种用于编译处理的装置800的框图。例如,装置800可以是移动电话,计算机,数字广播终端,消息收发设备,游戏控制台,平板设备,医疗设备,健身设备,个人数字助理等。
参照图6,装置800可以包括以下一个或多个组件:处理组件802,存储器804,电源组件806,多媒体组件808,音频组件810,输入/输出(I/ O)的接口812,传感器组件814,以及通信组件816。
处理组件802通常控制装置800的整体操作,诸如与显示,电话呼叫,数据通信,相机操作和记录操作相关联的操作。处理元件802可以包括一个或多个处理器820来执行指令,以完成上述的方法的全部或部分步骤。此外,处理组件802可以包括一个或多个模块,便于处理组件802和其他组件之间的交互。例如,处理组件802可以包括多媒体模块,以方便多媒体组件808和处理组件802之间的交互。
存储器804被配置为存储各种类型的数据以支持在设备800的操作。这些数据的示例包括用于在装置800上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。存储器804可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
电源组件806为装置800的各种组件提供电力。电源组件806可以包括电源管理系统,一个或多个电源,及其他与为装置800生成、管理和分配电力相关联的组件。
多媒体组件808包括在所述装置800和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(LCD)和触摸面板(TP)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。在一些实施例中,多媒体组件808包括一个前置摄像头和/或后置摄像头。当设备800处于操作模式,如拍摄模式或视频模式时,前置摄像头和/或后置摄像头可以接收外部的多媒体数据。每个前置摄像头和后置摄像头可以是一个固定的光学透镜系统或具有焦距和光学变焦能力。
音频组件810被配置为输出和/或输入音频信号。例如,音频组件810包括一个麦克风(MIC),当装置800处于操作模式,如呼叫模式、记录模式和语音信息处理模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器804或经由通信组件816发送。在一些实施例中,音频组件810还包括一个扬声器,用于输出音频信号。
I/ O接口812为处理组件802和外围接口模块之间提供接口,上述外围接口模块可以是键盘,点击轮,按钮等。这些按钮可包括但不限于:主页按钮、音量按钮、启动按钮和锁定按钮。
传感器组件814包括一个或多个传感器,用于为装置800提供各个方面的状态评估。例如,传感器组件814可以检测到设备800的打开/关闭状态,组件的相对定位,例如所述组件为装置800的显示器和小键盘,传感器组件814还可以检测装置800或装置800一个组件的位置改变,用户与装置800接触的存在或不存在,装置800方位或加速/减速和装置800的温度变化。传感器组件814可以包括接近传感器,被配置用来在没有任何的物理接触时检测附近物体的存在。传感器组件814还可以包括光传感器,如CMOS或CCD图像传感器,用于在成像应用中使用。在一些实施例中,该传感器组件814还可以包括加速度传感器,陀螺仪传感器,磁传感器,压力传感器或温度传感器。
通信组件816被配置为便于装置800和其他设备之间有线或无线方式的通信。装置800可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件816经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信组件816还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频信息处理(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在示例性实施例中,装置800可以被一个或多个应用专用集成电路(ASIC)、数字信号处理器(DSP)、数字信号处理设备(DSPD)、可编程逻辑器件(PLD)、现场可编程门阵列(FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述方法。
在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器804,上述指令可由装置800的处理器820执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
图7是本申请的一些实施例中服务器的结构示意图。该服务器1900可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(central processingunits,CPU)1922(例如,一个或一个以上处理器)和存储器1932,一个或一个以上存储应用程序1942或数据1944的存储介质1930(例如一个或一个以上海量存储设备)。其中,存储器1932和存储介质1930可以是短暂存储或持久存储。存储在存储介质1930的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1922可以设置为与存储介质1930通信,在服务器1900上执行存储介质1930中的一系列指令操作。
服务器1900还可以包括一个或一个以上电源1926,一个或一个以上有线或无线网络接口1950,一个或一个以上输入输出接口1958,一个或一个以上键盘1956,和/或,一个或一个以上操作系统1941,例如Windows ServerTM,Mac OS XTM,UnixTM, LinuxTM,FreeBSDTM等等。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行图1所示的编译处理方法。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由装置(服务器或者终端)的处理器执行时,使得装置能够执行一种编译处理方法,所述方法包括:获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。
应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
以上对本申请所提供的一种编译处理方法、一种编译处理装置和一种用于编译处理的装置,进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (22)
1.一种编译处理方法,其特征在于,所述方法适用于密文数据处理算法的不同编程语言实现,所述方法包括:
获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作;
其中,所述隐私操作通过调用多方安全计算引擎实现。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,包括:
根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树;
根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树,包括:
对所述密文处理源码进行序列化处理,将所述密文处理源码从字符流转换为令牌流;
根据所述第一编程语言的第一语法规则,对所述令牌流进行语法分析,将所述令牌流转换为抽象语法树。
4.根据权利要求2所述的方法,其特征在于,所述根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码,包括:
从所述抽象语法树的根节点开始遍历所述抽象语法树的各节点,根据所述第一语法规则,对所述各节点进行语法分析,确定所述各节点对应的第一语法结构;
根据所述各节点对应的第一语法结构,以及所述第一语法规则与所述第二语法规则之间的对应关系,将所述各节点对应的第一语法结构转换为第二语法结构,生成符合所述第二语法规则的中间语言码。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述中间语言码输入所述中间语言码对应的执行器,通过所述执行器执行所述中间语言码,所述执行器基于所述第二编程语言的应用编程接口所实现。
6.根据权利要求1至5任一所述的方法,其特征在于,所述隐私操作包括如下任意一项或多项:基于密文的计算操作、基于密文的模型训练、基于密文的数据库查询操作。
7.根据权利要求1至5任一所述的方法,其特征在于,所述密文处理包括利用机器学习网络进行机器学习模型的训练,所述机器学习网络包括前端和后端,所述后端包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述机器学习网络的源码中。
8.一种编译处理装置,其特征在于,所述装置适用于密文数据处理算法的不同编程语言实现,所述装置包括:
获取模块,用于获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
编译模块,用于根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作;
其中,所述隐私操作通过调用多方安全计算引擎实现。
9.根据权利要求8所述的装置,其特征在于,所述编译模块,包括:
第一转换子模块,用于根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树;
第二转换子模块,用于根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码。
10.根据权利要求9所述的装置,其特征在于,所述第一转换子模块,包括:
第一转换单元,用于对所述密文处理源码进行序列化处理,将所述密文处理源码从字符流转换为令牌流;
第二转换单元,用于根据所述第一编程语言的第一语法规则,对所述令牌流进行语法分析,将所述令牌流转换为抽象语法树。
11.根据权利要求9所述的装置,其特征在于,所述第二转换子模块,包括:
语法分析单元,用于从所述抽象语法树的根节点开始遍历所述抽象语法树的各节点,根据所述第一语法规则,对所述各节点进行语法分析,确定所述各节点对应的第一语法结构;
语法转换单元,用于根据所述各节点对应的第一语法结构,以及所述第一语法规则与所述第二语法规则之间的对应关系,将所述各节点对应的第一语法结构转换为第二语法结构,生成符合所述第二语法规则的中间语言码。
12.根据权利要求8所述的装置,其特征在于,所述装置还包括:
执行模块,用于将所述中间语言码输入所述中间语言码对应的执行器,通过所述执行器执行所述中间语言码,所述执行器基于所述第二编程语言的应用编程接口所实现。
13.根据权利要求8至12任一所述的装置,其特征在于,所述隐私操作包括如下任意一项或多项:基于密文的计算操作、基于密文的模型训练、基于密文的数据库查询操作。
14.根据权利要求8至12任一所述的装置,其特征在于,所述密文处理包括利用机器学习网络进行机器学习模型的训练,所述机器学习网络包括前端和后端,所述后端包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述机器学习网络的源码中。
15.一种用于编译处理的装置,其特征在于,所述装置适用于密文数据处理算法的不同编程语言实现,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
获取基于第一编程语言的密文处理源码,所述密文处理源码中包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述密文处理源码中;
根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,所述自定义语言中包括自定义操作码,所述自定义操作码用于转换所述密文处理源码中的隐私操作;
其中,所述隐私操作通过调用多方安全计算引擎实现。
16.根据权利要求15所述的装置,其特征在于,所述根据所述第一编程语言的语法规则以及自定义语言,将所述密文处理源码转换为支持所述隐私操作的所述自定义语言对应的中间语言码,包括:
根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树;
根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码。
17.根据权利要求16所述的装置,其特征在于,所述根据所述第一编程语言的第一语法规则,对所述密文处理源码进行语法分析,得到所述密文处理源码对应的抽象语法树,包括:
对所述密文处理源码进行序列化处理,将所述密文处理源码从字符流转换为令牌流;
根据所述第一编程语言的第一语法规则,对所述令牌流进行语法分析,将所述令牌流转换为抽象语法树。
18.根据权利要求16所述的装置,其特征在于,所述根据所述自定义语言的第二语法规则,将所述抽象语法树转换为支持所述隐私操作的所述自定义语言对应的中间语言码,包括:
从所述抽象语法树的根节点开始遍历所述抽象语法树的各节点,根据所述第一语法规则,对所述各节点进行语法分析,确定所述各节点对应的第一语法结构;
根据所述各节点对应的第一语法结构,以及所述第一语法规则与所述第二语法规则之间的对应关系,将所述各节点对应的第一语法结构转换为第二语法结构,生成符合所述第二语法规则的中间语言码。
19.根据权利要求15所述的装置,其特征在于,所述装置还经配置以由一个或者一个以上处理器执行所述一个或者一个以上程序包含用于进行以下操作的指令:
将所述中间语言码输入所述中间语言码对应的执行器,通过所述执行器执行所述中间语言码,所述执行器基于所述第二编程语言的应用编程接口所实现。
20.根据权利要求15至19任一所述的装置,其特征在于,所述隐私操作包括如下任意一项或多项:基于密文的计算操作、基于密文的模型训练、基于密文的数据库查询操作。
21.根据权利要求15至19任一所述的装置,其特征在于,所述密文处理包括利用机器学习网络进行机器学习模型的训练,所述机器学习网络包括前端和后端,所述后端包括基于第二编程语言的隐私操作,所述隐私操作以动态库形式包含在所述机器学习网络的源码中。
22.一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如权利要求1至7任一所述的编译处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010256341.0A CN111142876B (zh) | 2020-04-02 | 2020-04-02 | 一种编译处理方法、装置和用于编译处理的装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010256341.0A CN111142876B (zh) | 2020-04-02 | 2020-04-02 | 一种编译处理方法、装置和用于编译处理的装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111142876A CN111142876A (zh) | 2020-05-12 |
CN111142876B true CN111142876B (zh) | 2020-08-18 |
Family
ID=70528744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010256341.0A Active CN111142876B (zh) | 2020-04-02 | 2020-04-02 | 一种编译处理方法、装置和用于编译处理的装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111142876B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111797097B (zh) * | 2020-06-30 | 2024-02-27 | 杭州密数科技有限公司 | 一种基于软硬件结合的方式实现安全范围查询的方法 |
CN111736852B (zh) * | 2020-07-20 | 2020-12-01 | 华控清交信息科技(北京)有限公司 | 一种编译链接方法、装置和用于编译链接的装置 |
CN112346722B (zh) | 2020-11-11 | 2022-04-19 | 苏州大学 | 一种实现编译型嵌入式Python的方法 |
CN113076108B (zh) * | 2021-06-04 | 2021-08-20 | 华控清交信息科技(北京)有限公司 | 一种代码执行方法、装置和用于代码执行的装置 |
CN114328525A (zh) * | 2021-12-27 | 2022-04-12 | 深圳前海微众银行股份有限公司 | 数据处理方法及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587445A (zh) * | 2009-06-19 | 2009-11-25 | 国网电力科学研究院 | 一种plc编译执行方法 |
CN106789058A (zh) * | 2016-12-09 | 2017-05-31 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
CN108920133A (zh) * | 2018-06-14 | 2018-11-30 | 北京三快在线科技有限公司 | 跨语言编程方法、装置、电子设备及存储介质 |
CN110765473A (zh) * | 2019-10-11 | 2020-02-07 | 矩阵元技术(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9740463B2 (en) * | 2015-08-10 | 2017-08-22 | Oracle International Corporation | Mechanism for increasing the performance of multiple language programs by inserting called language IR into the calling language |
-
2020
- 2020-04-02 CN CN202010256341.0A patent/CN111142876B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101587445A (zh) * | 2009-06-19 | 2009-11-25 | 国网电力科学研究院 | 一种plc编译执行方法 |
CN106789058A (zh) * | 2016-12-09 | 2017-05-31 | 南京理工大学 | 一种代理重加密算法描述及解析方法 |
CN108920133A (zh) * | 2018-06-14 | 2018-11-30 | 北京三快在线科技有限公司 | 跨语言编程方法、装置、电子设备及存储介质 |
CN110765473A (zh) * | 2019-10-11 | 2020-02-07 | 矩阵元技术(深圳)有限公司 | 数据处理方法、装置、计算机设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111142876A (zh) | 2020-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111142876B (zh) | 一种编译处理方法、装置和用于编译处理的装置 | |
US11887597B2 (en) | Voice application platform | |
Le et al. | Smartsynth: Synthesizing smartphone automation scripts from natural language | |
US20210327422A1 (en) | Voice Application Platform | |
CN111026396B (zh) | 页面渲染方法、装置、电子设备及存储介质 | |
CN111258590B (zh) | 一种代码执行方法、装置和用于代码执行的装置 | |
US20190012153A1 (en) | Method and device for supporting multi-framework syntax | |
US11437029B2 (en) | Voice application platform | |
US20190294433A1 (en) | Application configuration file generation method and apparatus, application page display method and apparatus and storage medium | |
CN111708927B (zh) | 信息推荐方法、装置及电子设备 | |
US11151180B2 (en) | Messaging digest | |
CN108170430B (zh) | 一种界面展示的方法及系统 | |
CN107402792B (zh) | 应用软件安装包的集成方法、装置、设备及存储介质 | |
CN113076108B (zh) | 一种代码执行方法、装置和用于代码执行的装置 | |
CN110851108A (zh) | 电子设备操作方法、装置、电子设备及存储介质 | |
CN111736816B (zh) | 一种编译链接方法、装置和用于编译链接的装置 | |
CN111767058A (zh) | 程序编译方法及装置、电子设备和存储介质 | |
CN115202623A (zh) | 一种业务能力使用方法、装置以及设备 | |
CN109558553B (zh) | 样式确定方法及装置 | |
US9747448B2 (en) | Cryptographic mechanisms to provide information privacy and integrity | |
CN111880805A (zh) | 软件项目的包文件生成方法及装置、设备、存储介质 | |
CN111736852B (zh) | 一种编译链接方法、装置和用于编译链接的装置 | |
CN116149632A (zh) | 业务逻辑定制方法和装置、计算机设备、存储介质 | |
Yang et al. | Summarization of dialogues and conversations at scale | |
CN114219443A (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 |