一种数据处理方法、装置和电子设备与流程

专利2022-05-09  194


本发明涉及数据处理领域,特别是涉及一种数据处理方法、装置和电子设备。
背景技术
:多方安全计算是指,针对无可信第三方的情况下,在多个非互信数据库之间,在数据相互保密的前提下,实现数据的计算和融合。目前,通常由密文计算平台来实现多方安全计算,即密文计算平台从数据方获得隐私数据的密文,然后基于获取的隐私数据的密文密文进行计算,得到计算结果的密文;再将计算结果的密文发送给结果需求方,由结果需求方对计算结果的密文进行解密,得到计算结果的明文。由于密文计算平台获取的是隐私数据的密文,不知道真正的数据;且计算结果的明文只能被结果方获取;因此能够在数据保密的情况下进行数据的计算和融合。然而针对密文计算的计算量十分庞大,计算效率较低。技术实现要素:本发明实施例提供一种数据处理方法,以提高计算效率。相应的,本发明实施例还提供了一种数据处理装置和电子设备,用以保证上述方法的实现及应用。为了解决上述问题,本发明实施例公开了一种数据处理方法,具体包括:获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码;基于所述原始代码,生成包括多个计算节点信息的有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的数据提供方;依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码;将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。可选地,所述有向无环图包括多个层级,每个层级包括至少一个计算节点;所述依据所述有向无环图中每个计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图,包括:从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方;若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到一明文计算子图;待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图。可选地,所述计算节点信息还包括连接计算节点的有向边;所述基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码,包括:依据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;依据所述明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列;基于所述第一序列生成生成明文计算代码;以及依据所述密文计算子图中各计算节点之间的有向边,确定所述密文计算子图中各计算节点之间的依赖关系;依据所述密文计算子图中各计算节点之间的依赖关系,对所述密文计算子图中的计算节点进行排序,得到第二序列;基于所述第二序列生成生成密文计算代码。可选地,所述基于所述原始代码,生成包括多个计算节点信息的有向无环图,包括:若所述原始代码类型与允许调用预封装的库文件的代码类型匹配,则调用所述预封装的库文件;所述预封装的库文件调用与所述原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。可选地,所述基于所述原始代码,生成包括多个计算节点信息的有向无环图,包括:若所述原始代码类型与允许调用预封装的库文件的代码类型不匹配,则将所述原始代码翻译为与允许调用预封装的库文件的代码;调用所述预封装的库文件;所述预封装的库文件调用与所述翻译后的原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。本发明实施例还公开了一种数据处理装置,具体包括:获取模块,用于获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码;有向无环图生成模块,用于基于所述原始代码,生成包括多个计算节点的信息有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的参与方,所述参与方包括数据提供方;子图生成模块,用于依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;代码生成模块,用于基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码;代码发送模块,用于将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。可选地,所述有向无环图包括多个层级,每个层级包括至少一个计算节点;所述子图生成模块,包括:明文计算子图生成子模块,用于从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方;若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到一明文计算子图;密文计算子图生成子模块,用于待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图。可选地,所述计算节点信息还包括连接计算节点的有向边;所述代码生成模块,包括:明文计算代码生成子模块,用于依据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;依据所述明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列;基于所述第一序列生成生成明文计算代码;密文计算代码生成子模块,用于依据所述密文计算子图中各计算节点之间的有向边,确定所述密文计算子图中各计算节点之间的依赖关系;依据所述密文计算子图中各计算节点之间的依赖关系,对所述密文计算子图中的计算节点进行排序,得到第二序列;基于所述第二序列生成生成密文计算代码。可选地,所述有向无环图生成模块,包括:第一调用子模块,用于若所述原始代码类型与允许调用预封装的库文件的代码类型匹配,则调用所述预封装的库文件;所述预封装的库文件调用与所述原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。可选地,所述有向无环图生成模块,包括:第二调用子模块,用于若所述原始代码类型与允许调用预封装的库文件的代码类型不匹配,则将所述原始代码翻译为与允许调用预封装的库文件的代码;调用所述预封装的库文件;所述预封装的库文件调用与所述翻译后的原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。本发明实施例还公开了一种可读介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本发明实施例中一个或多个所述的数据处理方法。本发明实施例还公开了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述本发明实施例中一个或多个所述的数据处理方法。与现有技术相比,本发明实施例包括以下优点:本发明实施例中,可以获取原本由密文计算平台的密文计算引擎所执行的原始代码,并基于所述原始代码,生成包括多个计算节点信息的有向无环图;其中,计算节点信息可以包括计算节点和表征计算节点所归属的数据提供方的归属属性;进而可以依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;然后基于所述明文计算子图生成明文计算代码并将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及基于所述密文计算子图生成密文计算代码并将所述密文计算代码发送至密文计算平台的密文计算引擎执行;从而实现将密文计算分割为明密文混合计算。相对于密文计算引擎进行密文计算而言,明文计算引擎进行的明文计算速度更快,进而能够提高计算效率。附图说明图1是本发明的一种数据处理方法实施例的步骤流程图;图2a是本发明实施例的一种有向无环图的示意图;图2b是本发明实施例的一种明文计算子图的示意图;图2c是本发明实施例的一种密文计算子图的示意图;图3是本发明的一种数据处理方法可选实施例的步骤流程图;图4a是本发明实施例的一种数据处理过程示意图;图4b是本发明实施例的另一种数据处理过程示意图;图5是本发明的一种数据处理装置实施例的结构框图;图6是本发明的一种数据处理装置可选实施例的结构框图;图7示意性地示出了用于执行根据本发明的方法的电子设备的框图。具体实施方式为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。本发明实施例提出一种数据提供方,将原本由密文计算平台中密文计算引擎进行的计算,分割为由数据提供方本地持有的明文计算引擎进行的计算和密文计算平台中密文计算引擎进行的计算,即明密文混合计算;相对于密文计算引擎进行密文计算而言,明文计算引擎进行的明文计算速度更快,进而能够提高计算效率。参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,具体可以包括如下步骤:步骤102、获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码。本发明实施例中,一种将原本由密文计算平台中密文计算引擎进行的计算,分割为由数据提供方本地持有的明文计算引擎进行的计算和密文计算平台中密文计算引擎进行的计算的方式可以是:获取原本由密文计算平台的密文计算引擎所执行的代码;然后将原本由密文计算平台的密文计算引擎所执行的代码,分离为明文计算代码和密文计算代码;然后将明文计算代码发送至数据提供方本地持有的明文计算引擎执行,以及将密文计算代码发送至密文计算平台的密文计算引擎执行。其中,为了便于后续说明,可以将原本由密文计算平台的密文计算引擎所执行的代码,称为原始代码。本发明实施例中,将原始代码分离为明文计算代码和密文计算代码的方式可以包括步骤104~步骤108:步骤104、基于所述原始代码,生成包括多个计算节点信息的有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的数据提供方。本发明实施例中,所述原始代码中指定了计算数据的数据源,也就是计算数据所属的数据提供方。当然,所述原始代码中还包含了计算数据所需进行的计算,以及各种计算的调用关系;进而可以依据原始代码中计算数据的数据源、计算数据所需进行的计算,以及各种计算的调用关系,生成包括多个计算节点信息的有向无环图。其中,所述计算节点信息可以包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的数据提供方方。一个示例中,可参照图2a;图2a中的有向无环图包括8个计算节点:计算节点1(p1)、计算节点2(p1)、计算节点3(p2)、计算节点4(p1)、计算节点5(p1)、计算节点6(p0)、计算节点7(p1)和计算节点8(p0),其中,p0、p1和p2是各计算节点所归属的数据提供方。此外,所述计算节点信息还可以包括其他与有向无环图相关的信息,如连接计算节点的有向边;所述有向边可以用于表征其所包含的各计算节点之间依赖关系。所述所述有向无环图可以是指无回路的有向图;所述有向无环图中的“有向”可以体现在有向边上。步骤106、依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图。步骤108、基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码。当某个计算节点和该计算节点所依赖的全部计算节点属于至少两个数据提供方时,在任一数据提供方本地进行计算时,会泄露其他数据提供方的数据;只有当某个计算节点和该计算节点所依赖的全部计算节点都属于同一个数据提供方时,在该数据提供方本地进行计算时,才不会造成数据泄露;此时,该计算节点对应的计算,以及该计算节点所依赖的全部计算节点对应的计算,可以在该数据提供方本地持有的明文计算引擎进行。进而本发明实施例可以基于所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图。其中,所述明文计算子图可以包括至少一个;一个明文计算子图中所有计算节点对应同一个数据提供方。一个示例中,将图2a中的有向无环图分割得到的一个明文计算子图(如图2b)和一个密文计算子图(如图2c)。当明文计算子图包括多个时,可以分别基于各明文计算子图生成对应的明文计算代码,进而可以得到多段明文计算代码。当密文计算子图包括多个时,可以分别基于各密文计算子图生成密文计算代码。步骤110、将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。其中,当明文计算代码包括多段时,每段明文计算代码对应一个数据提供方;因此可以先确定各段明文计算代码对应的数据提供方,然后将各段明文计算代码分别发送至对应的数据提供方,由各数据提供方本地持有的明文计算引擎执行对应的明文计算代码,以进行明文计算。以及可以将密文计算代码发送至密文计算平台,由密文计算平台中的密文计算引擎执行密文计算代码,以进行密文计算。综上,本发明实施例中,可以获取原本由密文计算平台的密文计算引擎所执行的原始代码,并基于所述原始代码,生成包括多个计算节点信息的有向无环图;其中,计算节点信息可以包括计算节点和的表征计算节点所归属的数据提供方的归属属性;进而可以依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;然后基于所述明文计算子图生成明文计算代码并将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及基于所述密文计算子图生成密文计算代码并将所述密文计算代码发送至密文计算平台的密文计算引擎执行;从而实现将密文计算分割为明密文混合计算。相对于密文计算引擎进行密文计算而言,明文计算引擎进行的明文计算速度更快,进而能够提高计算效率。以下对如何将有向无环图分割为明文计算子图和密文计算子图,以及如何生成明文计算代码和密文计算代码进行说明。参照图3,示出了本发明的一种数据处理方法可选实施例的步骤流程图。步骤302、获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码。步骤304、基于所述原始代码,生成包括多个计算节点信息的有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的数据提供方;所述计算节点信息还包括连接计算节点的有向边;所述有向无环图包括多个层级,每个层级包括至少一个计算节点。本发明实施例中,所述有向无环图可以包括多个层级,每个层级可以包括至少一个计算节点;所述计算节点信息还可以包括有向边,所述有向边可以如图2a中的带箭头的线段;各层级的计算节点可以由有向边连接。分别位于相邻层级的两个计算节点之间的有向边,可以用于表征这两个计算节点之间的依赖关系。其中,有向边的方向可以与依赖关系相同,也可以与依赖关系相反,具体可以按照需求设置,本发明实施例对此不作限制。例如,图2a中有向边的方向与依赖关系的相同,计算节点4依赖计算节点1,计算节点5依赖计算节点1和计算节点2,计算节点6依赖计算节点2和计算节点3,计算节点7依赖计算节点4和计算节点5,计算节点8依赖计算节点6和计算节点7。其中,每个计算节点可以对应一个操作符,如加、减、乘和除等;也就是说每个计算节点可以对应一种基础运算或操作;本发明实施例对此不作限制。其中,上述步骤106可以包括如下步骤306~步骤310:步骤306、从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方。步骤308、若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到一明文计算子图。步骤310、待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图。本发明实施例中,当有向无环图中有向边的方向与相邻两个计算节点之间的依赖关系相同,则有向无环图中层级的级数可以按照有向边的方向逐层递增。当向无环图中有向边的方向与相邻两个计算节点之间的依赖关系相反,则有向无环图中层级的级数可以按照有向边反方向逐层递增。例如图2a中有向边的方向与依赖关系的相同,有向无环图中层级的级数可以按照有向边的方向逐层递增;也就是说计算节点1、计算节点2和计算节点3所在的层级为第一个层级,计算节点4、计算节点5和计算节点6所在的层级为第二个层级,计算节点7所在的层级为第三个层级,计算节点8所在的层级为第四个层级。由于当某个计算节点和该计算节点所依赖的全部计算节点都属于同一个数据提供方时,在该数据提供方本地进行计算时,不会造成数据泄露;进而本发明实施例可以以最大程度的将可以在明文计算引擎中进行计算的计算节点分离出来为目标,来从有向无环图中分离出明文计算子图。其中,可以从所述有向无环图的最高层级开始逐层向下,针对每个层级的每个计算节点进行如下操作:依据有向无环图中的有向边,确定该计算节点所依赖的计算节点;该计算节点所依赖的计算节点可以包括该计算节点直接依赖的计算节点,和该计算节点间接依赖的计算节点。该计算节点直接依赖的计算节点可以是指与该计算节点所在层级相邻的下一层级上的计算节点。该计算节点间接依赖的计算节点可以包括该计算节点直接依赖的计算节点所直接依赖节点和间接依赖节点。也就是说,该计算节点所依赖的节点可以包括多个层级上的计算节点。然后根据该计算节点的归属属性,以及该计算节点所依赖的计算节点的归属属性,判断所述计算节点在各个层级上所依赖的计算节点,与所述计算节点是否归属于同一个数据提供方。也就是判断该计算节点对应的计算,以及该计算节点所依赖的计算节点的计算,是否可以在同一个数据提供方本地的明文计算引擎中执行。若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则说明该计算节点对应的计算,以及该计算节点所依赖的计算节点的计算,可以在同一个数据提供方本地的明文计算引擎中执行;因此可以将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从有向无环图中分离,得到一明文计算子图。若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于不同的数据提供方,则说明该计算节点对应的计算,以及该计算节点所依赖的计算节点的计算,不可以在同一个数据提供方本地的明文计算引擎中执行,需要由密文计算平台的密文计算引擎执行;此时则无需将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,而是继续针对下一个计算节点执行上述步骤306~步骤308。需要说明的是,若在该计算节点之前,已经从有向无环图中分离出了至少一个明文计算子图,则可以从剩余的有向无环图的最高层级开始逐层向下,针对每个层级的每的个计算节点进行上述操作。若在该计算节点之前,未从有向无环图中分离出明文计算子图,则从完整的有向无环图的最高层级开始逐层向下,针对每个层级的每的个计算节点进行上述操作。以及若在该计算节点之前,已经从有向无环图中分离出了至少一个明文计算子图,则可以将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从剩余的有向无环图中分离,得到一明文计算子图;若在该计算节点之前,未从有向无环图中分离出明文计算子图,则可以将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从完整的有向无环图中分离,得到一明文计算子图。待对有向无环图中每个层级的每个节点执行上述步骤306~步骤308后,可以从所述有向无环图中分离出所有的明文计算子图;然后将有向无环图中剩余的子图,作为密文计算子图。例如,从图2a中第四个层级开始,针对第四个层级上的计算节点8进行如下操作:,可以确定计算节点8所依赖的计算节点包括计算节点1~计算节点7;显然,计算节点1~计算节点7,与节点8归属的数据提供方不同。因此可以针对处于第三个层级上的计算节点7进行如下操作:可以确定计算节点7依赖的计算节点包括:计算节点4、计算节点5、计算节点2和计算节点1;其中,计算节点7、计算节点4、计算节点5、计算节点2和计算节点1对应所属的数据提供方均是p1,也就是说,计算节点7、计算节点4、计算节点5、计算节点2和计算节点1属于同一个数据提供方,进而可以将计算节点7、计算节点4、计算节点5、计算节点2和计算节点1,以及这5个计算节点之间的有向边,从有向无环图中分离,得到明文计算子图如图2b。相应的,剩余的有向无环图可参照图2c。然后针对第二层级上的计算节点6进行如下操作:可以确定计算节点6依赖的计算节点包括:计算节点2和计算节点3,而计算节点2、计算节点3和计算节点6不是归属于同一个数据提供方;因此无需将计算节点6、计算节点2和计算节点3从剩余的有向无环图中分离,最终得到的密文计算子图即为图2c。然后可以基于所述明文计算子图生成明文计算代码,可以参照步骤312;以及可以基于所述密文计算子图生成密文计算代码,可以参照步骤314:步骤312、依据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;依据所述明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列;基于所述第一序列生成生成明文计算代码。本发明实施例中,可以根据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;然后根据明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列。其中,可以选择明文计算子图中层级最低的一个节点为根,然后依据明文计算子图中的有向边,对明文计算子图中的计算节点进行排序;再依据明文计算子图中各计算节点的排序结果,生成第一序列。其中,对明文计算子图中的计算节点进行排序的方式可以包括多种,如递归排序、拓扑排序等;本发明实施例对此不作限制。其中,所述明文计算子图中每个有向边对应的两个计算节点,可以分别称为:入节点和出节点,其中,出节点依赖入节点。本发明的一个可选实施例中,第一序列中同一个有向边对应的入节点可以排在出节点之后;也就是说,第一序列中排在前面的计算节点,依赖排在其后面的计算节点。然后可以从第一序列中最后一个计算节点开始,从后向前逐步进行代码的生成;进而可以得到明文计算代码。步骤314、依据所述密文计算子图中各计算节点之间的有向边,确定所述密文计算子图中各计算节点之间的依赖关系;依据所述密文计算子图中各计算节点之间的依赖关系,对所述密文计算子图中的计算节点进行排序,得到第二序列;基于所述第二序列生成生成密文计算代码。其中,步骤314生成密文计算代码的方式,与上述步骤312生成明文计算代码的方式类似,在此不再赘述。步骤316、将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。综上,本发明实施例中,可以从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方;若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到个明文计算子图;待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图;进而能够最大程度的从有向无环图中分割出明文计算子图,从而能够最大程度的从密文计算中分离出明文计算,进一步提高计算效率。本发明的一个可选实施例中,可以在上层对编程接口进行封装,得到预封装的库文件;进而在获取原始代码后,可以调用预封装的库文件,生成原始代码对应的有向无环图。其中,所述编程接口可以是指基于函数式编程的接口。所述编程接口可以包括原子接口和组合接口,所述原子接口是最小计算单元,所述组合接口可以是由原子接口组合或组合接口组合得到。本发明的一个可选实施例中,可以以保证原子接口的正交性和性能为目标,来编写原子接口;进而便于原子接口的扩展,从而便于后续对预封装的库文件的功能进行扩展。其中,所述原子接口可以包括多种,如基础操作接口、列表操作接口、控制语句、数据操作接口等等,本发明实施例对此不作限制。基础操作接口如表1所示:表1列表操作接口如表2所示:接口名称操作map对数组每一个元素应用函数at获取数组的第i个元素shape获取数组的尺寸concat:拼接数组list单个元素构成数组表2控制语句如表3所示:接口名称操作condition条件操作rec递归调用函数callrec调用含递归的函数表3数据操作接口如表4所示:接口名称操作value返回明文数据source返回密文数据表4在上述基础上,本发明实施例中,所述基于所述原始代码,生成包括多个计算节点信息的有向无环图,包括:若所述原始代码类型与允许调用预封装的库文件的代码类型匹配,则调用所述预封装的库文件;所述预封装的库文件调用与所述原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。其中,可以判断原始代码类型与允许调用预封装的库文件的代码类型是否匹配。若所述原始代码类型与允许调用预封装的库文件的代码类型匹配,则可以调用预封装的库文件,生成原始代码对应的有向无环图。本发明实施例中,在调用预封装的库文件实现生成原始代码对应的有向无环图时,预封装的库文件在接口内部不进行计算,而是调用相应的编程接口。其中,对于原子接口,可以在底层直接转换为有向无环图的计算节点;对于组合接口,可以在底层转换为有向无环图的子图;其中,有向无环图的子图可以包括至少两个计算节点和一个有向边。进而可以预封装的库文件可以调用编程接口中与原始代码中的计算对应的原子接口,并基于原子接口对应操作参数所属的数据提供方,生成携带归属属性的计算节点。以及可以调用编程接口中与原始代码中的计算对应的组合接口,并基于组合接口对应操作参数所属的数据提供方,生成包含携带有归属属性的计算节点的有向子图。然后可以基于生成的包含携带有归属属性的计算节点,包含携带有归属属性的有向子图,以及各编辑接口的调用关系,确定各计算节点之间,以及子图与计算节点之间的依赖关系,进而可以得到包括多个计算节点信息的有向无环图。可参照图4a,示出了本发明实施例的一种数据处理过程示意图。本发明的一个可选实施例中,所述基于所述原始代码,生成包括多个计算节点信息的有向无环图,包括:若所述原始代码类型与允许调用预封装的库文件的代码类型不匹配,则将所述原始代码翻译为与允许调用预封装的库文件的代码;调用所述预封装的库文件;所述预封装的库文件调用与所述翻译后的原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。也就是在原始代码无法调用预封装的库文件时,可以将原始代码翻译为可以调用预封装的库文件的代码,然后再调用预封装的库文件,生成基于原始代码对应的有向无环图;这与上述类似,在此不再赘述。可参照图4b,示出了本发明实施例的另一种数据处理过程示意图。进而无论用户采用何种类型的代码来编写原本由密文计算引擎执行的原始代码,本发明实施例均可以将原始代码,分割为明文计算代码和密文计算代码,实现明密文的混合运算,通用性强。本发明实施例中,数据提供方本地的明文计算引擎在执行明文计算代码后,可以将明文计算结果加密并上传至密文计算平台。密文计算平台的密文计算引擎一方面可以基于各数据提供方上传的原始数据,执行密文计算代码来进行密文计算,得到密文计算结果;另一方面,密文计算引擎可以基于各数据提供方上传明文计算结果的密文和自身计算得到密文计算结果,执行密文计算代码进行密文计算,得到最终的密文计算结果;从而完成原始代码所需进行的计算。需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。参照图5,示出了本发明一种数据处理装置实施例的结构框图,具体可以包括如下模块:获取模块502,用于获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码;有向无环图生成模块504,用于基于所述原始代码,生成包括多个计算节点的信息有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的参与方,所述参与方包括数据提供方;子图生成模块506,用于依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;代码生成模块508,用于基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码;代码发送模块510,用于将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。参照图6,示出了本发明一种数据处理装置可选实施例的结构框图。本发明一个可选实施例中,所述有向无环图包括多个层级,每个层级包括至少一个计算节点;所述子图生成模块506,包括:明文计算子图生成子模块5062,用于从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方;若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到一明文计算子图;密文计算子图生成子模块5064,用于待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图。本发明一个可选实施例中,所述计算节点信息还包括连接计算节点的有向边;所述代码生成模块508,包括:明文计算代码生成子模块5082,用于依据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;依据所述明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列;基于所述第一序列生成生成明文计算代码;密文计算代码生成子模块5084,用于依据所述密文计算子图中各计算节点之间的有向边,确定所述密文计算子图中各计算节点之间的依赖关系;依据所述密文计算子图中各计算节点之间的依赖关系,对所述密文计算子图中的计算节点进行排序,得到第二序列;基于所述第二序列生成生成密文计算代码。本发明一个可选实施例中,所述有向无环图生成模块504,包括:第一调用子模块5042,用于若所述原始代码类型与允许调用预封装的库文件的代码类型匹配,则调用所述预封装的库文件;所述预封装的库文件调用与所述原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。本发明一个可选实施例中,所述有向无环图生成模块504,包括:第二调用子模块5044,用于若所述原始代码类型与允许调用预封装的库文件的代码类型不匹配,则将所述原始代码翻译为与允许调用预封装的库文件的代码;调用所述预封装的库文件;所述预封装的库文件调用与所述翻译后的原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。综上,本发明实施例中,可以获取原本由密文计算平台的密文计算引擎所执行的原始代码,并基于所述原始代码,生成包括多个计算节点信息的有向无环图;其中,计算节点信息可以包括计算节点和的表征计算节点所归属的数据提供方的归属属性;进而可以依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;然后基于所述明文计算子图生成明文计算代码并将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及基于所述密文计算子图生成密文计算代码并将所述密文计算代码发送至密文计算平台的密文计算引擎执行;从而实现将密文计算分割为明密文混合计算。相对于密文计算引擎进行密文计算而言,明文计算引擎进行的明文计算速度更快,进而能够提高计算效率。对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。本发明实施例还提供了一种可读介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本发明实施例中一个或多个所述的数据处理方法。本发明实施例还提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述本发明实施例中一个或多个所述的数据处理方法。本发明实施例一个示例中提供了一种电子设备,例如服务器,图7示出了可以实现根据本发明的服务器,例如管理服务器、存储服务器、应用服务器、云控服务、服务器集群等。该服务器传统上包括处理器710和以存储器720形式的计算机程序产品或者计算机可读介质。存储器720可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。存储器720具有用于执行上述方法中的任何方法步骤的程序代码731的存储空间730。例如,用于程序代码的存储空间730可以包括分别用于实现上面的方法中的各种步骤的各个程序代码731。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(cd)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为便携式或者固定存储单元。该存储单元可以具有与图7的服务器中的存储器720类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码,即可以由例如诸如710之类的处理器读取的代码,这些代码当由服务器运行时,导致该服务器执行上面所描述的方法中的各个步骤。本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。以上对本发明所提供的一种数据处理方法、一种数据处理装置和一种电子设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。当前第1页1 2 3 
技术特征:

1.一种数据处理方法,其特征在于,包括:

获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码;

基于所述原始代码,生成包括多个计算节点信息的有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的数据提供方;

依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;

基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码;

将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。

2.根据权利要求1所述的方法,其特征在于,所述有向无环图包括多个层级,每个层级包括至少一个计算节点;

所述依据所述有向无环图中每个计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图,包括:

从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方;

若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到一明文计算子图;

待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图。

3.根据权利要求1所述的方法,其特征在于,所述计算节点信息还包括连接计算节点的有向边;所述基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码,包括:

依据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;依据所述明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列;基于所述第一序列生成生成明文计算代码;

以及依据所述密文计算子图中各计算节点之间的有向边,确定所述密文计算子图中各计算节点之间的依赖关系;依据所述密文计算子图中各计算节点之间的依赖关系,对所述密文计算子图中的计算节点进行排序,得到第二序列;基于所述第二序列生成生成密文计算代码。

4.根据权利要求1所述的方法,其特征在于,所述基于所述原始代码,生成包括多个计算节点信息的有向无环图,包括:

若所述原始代码类型与允许调用预封装的库文件的代码类型匹配,则调用所述预封装的库文件;

所述预封装的库文件调用与所述原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;

其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。

5.根据权利要求1所述的方法,其特征在于,所述基于所述原始代码,生成包括多个计算节点信息的有向无环图,包括:

若所述原始代码类型与允许调用预封装的库文件的代码类型不匹配,则将所述原始代码翻译为与允许调用预封装的库文件的代码;

调用所述预封装的库文件;

所述预封装的库文件调用与所述翻译后的原始代码中计算对应的编辑接口,基于各编辑接口的调用关系和各编辑接口对应操作参数所属的数据提供方,生成包括多个计算节点信息的有向无环图;

其中,所述编程接口是基于函数式编程的接口,被封装在所述预封装的库文件中。

6.一种数据处理装置,其特征在于,包括:

获取模块,用于获取原始代码,所述原始代码是由密文计算平台的密文计算引擎所执行的代码;

有向无环图生成模块,用于基于所述原始代码,生成包括多个计算节点的信息有向无环图,其中,所述计算节点信息包括计算节点和计算节点的归属属性,所述归属属性表征计算节点所归属的参与方,所述参与方包括数据提供方;

子图生成模块,用于依据所述有向无环图中各计算节点的归属属性,将所述有向无环图分割为明文计算子图和密文计算子图;

代码生成模块,用于基于所述明文计算子图生成明文计算代码,以及基于所述密文计算子图生成密文计算代码;

代码发送模块,用于将所述明文计算代码发送至对应数据提供方本地的明文计算引擎执行,以及将所述密文计算代码发送至密文计算平台的密文计算引擎执行。

7.根据权利要求6所述的装置,其特征在于,所述有向无环图包括多个层级,每个层级包括至少一个计算节点;所述子图生成模块,包括:

明文计算子图生成子模块,用于从所述有向无环图的最高层级开始逐层向下,针对每个层级的每一个计算节点,依据所述计算节点的归属属性判断所述计算节点在各个层级上所依赖的计算节点与所述计算节点是否归属于同一个数据提供方;若所述计算节点在各个层级上所依赖的计算节点与所述计算节点归属于同一个数据提供方,则将所述计算节点、所述计算节点在各层级上所依赖的计算节点和对应的有向边从所述有向无环图中分离,得到一明文计算子图;

密文计算子图生成子模块,用于待从所述有向无环图中分离出所有的明文计算子图后,得到密文计算子图。

8.根据权利要求6所述的装置,其特征在于,所述计算节点信息还包括连接计算节点的有向边;所述代码生成模块,包括:

明文计算代码生成子模块,用于依据所述明文计算子图中各计算节点之间的有向边,确定所述明文计算子图中各计算节点之间的依赖关系;依据所述明文计算子图中各计算节点之间的依赖关系,对所述明文计算子图中的计算节点进行排序,得到第一序列;基于所述第一序列生成生成明文计算代码;

密文计算代码生成子模块,用于依据所述密文计算子图中各计算节点之间的有向边,确定所述密文计算子图中各计算节点之间的依赖关系;依据所述密文计算子图中各计算节点之间的依赖关系,对所述密文计算子图中的计算节点进行排序,得到第二序列;基于所述第二序列生成生成密文计算代码。

9.一种可读介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-5中任一项所述的数据处理方法。

10.一种电子设备,包括:

一个或多个处理器;和

其上存储有指令的一个或多个可读介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-5中任一项所述的数据处理方法。

技术总结
本发明实施例提供了一种数据处理方法、装置和电子设备,其中,所述的方法包括:获取原始代码,基于原始代码,生成包括多个计算节点信息的有向无环图,其中,计算节点信息包括计算节点和计算节点的归属属性,归属属性表征计算节点所归属的数据提供方;依据计算节点的归属属性,将有向无环图分割为明文计算子图和密文计算子图;基于明文计算子图生成明文计算代码,基于密文计算子图生成密文计算代码;将明文计算代码发送至对应的明文计算引擎执行,将密文计算代码发送至密文计算引擎执行。本发明实施例能够实现将密文计算分割为明密文混合计算;相对于密文计算引擎进行密文计算而言,明文计算引擎进行的明文计算速度更快,进而能够提高计算效率。

技术研发人员:苏乐;李浒
受保护的技术使用者:华控清交信息科技(北京)有限公司
技术研发日:2021.03.30
技术公布日:2021.08.03

转载请注明原文地址:https://doc.8miu.com/read-2299.html

最新回复(0)