CN112395623A - 一种数据处理方法、装置和电子设备 - Google Patents

一种数据处理方法、装置和电子设备 Download PDF

Info

Publication number
CN112395623A
CN112395623A CN201910764983.9A CN201910764983A CN112395623A CN 112395623 A CN112395623 A CN 112395623A CN 201910764983 A CN201910764983 A CN 201910764983A CN 112395623 A CN112395623 A CN 112395623A
Authority
CN
China
Prior art keywords
sorted
elements
array
ciphertext
ciphertext comparison
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.)
Granted
Application number
CN201910764983.9A
Other languages
English (en)
Other versions
CN112395623B (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.)
Huakong Tsingjiao Information Technology Beijing Co Ltd
Original Assignee
Huakong Tsingjiao Information Technology Beijing 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 Huakong Tsingjiao Information Technology Beijing Co Ltd filed Critical Huakong Tsingjiao Information Technology Beijing Co Ltd
Priority to CN201910764983.9A priority Critical patent/CN112395623B/zh
Publication of CN112395623A publication Critical patent/CN112395623A/zh
Application granted granted Critical
Publication of CN112395623B publication Critical patent/CN112395623B/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/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • 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/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6263Protecting personal data, e.g. for financial or medical purposes during internet communication, e.g. revealing personal data from cookies

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Medical Informatics (AREA)
  • Databases & Information Systems (AREA)
  • Complex Calculations (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例提供了一种数据处理方法、装置和电子设备,其中,所述方法包括:获取待排序数组A,所述待排序数组A包括N个值为密文的元素;对所述待排序数组A进行N‑1轮排序,每轮排序执行如下步骤:确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素;依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置;其中,所述密文比较结果H为0或1的密文;进而实现对密文数组的排序。

Description

一种数据处理方法、装置和电子设备
技术领域
本发明涉及数据处理领域,特别是涉及一种数据处理方法、装置和电子设备。
背景技术
随着计算机、通讯技术以及互联网技术的不断发展,大多数用户会通过电子设备进行信息的传输与存储,例如将文件上传到云端存储,向其他用户发送文件等等。其中,为了保证信息的安全,通常会对数据进行加密,例如在数据存储的过程中,会在对应存储的电子设备上对数据进行加密如在服务器、终端上进行数据加密;又如在数据传输的过程中对数据进行加密,如数据在终端与服务器传输的过程中对数据进行加密。
当电子设备需要使用这些数据时,需要先对数据进行解密,获取信息的明文后,再对数据进行相应的处理,从而导致信息存在安全隐患;例如,在电子支付场景中,用户用于支付的人脸数据明文在支付运算中对银联可见,若该人脸数据被窃取,同时将该人脸数据与对应的用户账户等信息关联,那么会对用户造成很大风险。为解决该问题,可以基于密文进行数据计算,以充分保证用户信息的安全性。
通常在基于密文计算的某些场景下,需要对一组数据进行排序,但是由于这些数据都是密文,无法判断哪个数据大,哪个数据小,导致无法对密文数据进行排序。
发明内容
本发明实施例提供一种数据处理方法,以基于密文的数组元素排序。
相应的,本发明实施例还提供了一种数据处理装置和电子设备,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种数据处理方法,具体包括:获取待排序数组A,所述待排序数组A包括N个值为密文的元素;对所述待排序数组A进行N-1轮排序,每轮排序执行如下步骤:确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素;依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置;其中,所述密文比较结果H为0或1的密文,N为正整数,i为整数,i的取值范围为0~N-1。
可选地,若是进行A[i]≥A[i+1]的密文比较,则所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H,包括:依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i]-A[i+1])的减法计算任务,得到对应的差值;基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;将所述差值对应二进制的首位的密文确定为所述A[i]≥A[i+1]的密文比较结果。
可选地,若是进行A[i]<A[i+1]的密文比较,则所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H,包括:依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i+1]-A[i])的减法计算任务,得到对应的差值;基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;将所述差值对应二进制的首位的密文确定为所述A[i]<A[i+1]的密文比较结果。
可选地,所述依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,包括:若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
可选地,所述依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,包括:若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
可选地,所述的方法还包括:构造辅助数组B;将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的下标;在所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H之后,所述方法还包括:依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置。
可选地,若是进行A[i]≥A[i+1]的密文比较,则所述依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置包括:若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为H*B[i]+(1-H)*B[i+1];若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
可选地,若是进行A[i]<A[i+1]的密文比较,则所述依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置包括:若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1];若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。
可选地,所述的方法还包括:每轮对所述待排序数组A和辅助数组B进行排序后,判断本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同;若相同,则停止执行对所述待排序数组A和辅助数组B的下一轮排序。
本发明实施例还公开了一种数据处理装置,具体包括:待排序数组获取模块,用于获取待排序数组A,所述待排序数组A包括N个值为密文的元素;排序模块,用于对所述待排序数组A进行N-1轮排序,每轮排序由如下子模块执行:待排序元素确定子模块,用于确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素;密文比较子模块,用于依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;元素位置交换子模块,用于依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置;其中,所述密文比较结果H为0或1的密文,N为正整数,i为整数,i的取值范围为0~N-1。
可选地,所述密文比较子模块包括:第一元素差值计算单元,用于若是进行A[i]≥A[i+1]的密文比较,则依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i]-A[i+1])的减法计算任务,得到对应的差值;第一差值首位提取单元,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;第一比较结果确定单元,用于将所述差值对应二进制的首位的密文确定为所述A[i]≥A[i+1]的密文比较结果。
可选地,所述密文比较子模块包括:第二元素差值计算单元,用于若是进行A[i]<A[i+1]的密文比较,则依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i+1]-A[i])的减法计算任务,得到对应的差值;第二差值首位提取单元,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;第二比较结果确定单元,用于将所述差值对应二进制的首位的密文确定为所述A[i]<A[i+1]的密文比较结果。
可选地,所述元素位置交换子模块包括:第一元素赋值单元,用于若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];第二元素赋值单元,用于若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
可选地,所述元素位置交换子模块包括:第三元素赋值单元,用于若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];第四元素赋值单元,用于若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
可选地,所述的装置还包括:辅助数组构造模块,用于构造辅助数组B;元素下标赋值模块,用于将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的下标;下标位置交换模块,用于在所述元素位置交换子模块依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H之后,依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置。
可选地,所述下标位置交换模块包括:第一下标赋值子模块,用于若是进行A[i]≥A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为H*B[i]+(1-H)*B[i+1];第二下标赋值子模块,用于若是进行A[i]≥A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
可选地,所述下标位置交换模块包括:第三下标赋值子模块,用于若是进行A[i]<A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1];第四下标赋值子模块,用于若是进行A[i]<A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。
可选地,所述的装置还包括:辅助数组判断模块,用于每轮对所述待排序数组A和辅助数组B进行排序后,判断本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同;排序停止模块,用于若本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同,则停止执行对所述待排序数组A和辅助数组B的下一轮排序。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本发明实施例中一个或多个所述的数据处理方法。
本发明实施例还公开了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述本发明实施例中一个或多个所述的数据处理方法。
与现有技术相比,本发明实施例包括以下优点:
本发明实施例中,可以获取包含N个值为密文元素的待排序数组A,然后对所述待排序数组A进行N-1轮排序,每轮排序执行如下步骤:确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是相邻的上一轮排序后去掉已确定位置的一个元素后的元素;依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置;进而实现对密文数组的排序。
附图说明
图1是本发明的一种数据处理方法实施例的步骤流程图;
图2a是本发明的一种密文比较方法实施例的步骤流程图;
图2b是本发明的一种密文比较方法可选实施例的步骤流程图;
图3是本发明的一种数据处理方法可选实施例的步骤流程图;
图4是本发明的又一种数据处理方法可选实施例的步骤流程图;
图5是本发明的一种数据处理装置实施例的结构框图;
图6是本发明的一种数据处理装置可选实施例的结构框图;
图7示意性地示出了用于执行根据本发明的方法的电子设备的框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例中,用于执行所述数据处理方法的设备可以提供多方安全计算服务,多方安全计算可以抽象的理解为:两方分别有各自的私有数据,在不泄漏各自私有数据的情况下,能够计算出关于公共函数的结果;整个计算完成时,只有计算结果对双方可知,且双方均不知对应的数据以及计算过程的中间数据。其中,所述公共函数可以实现多种计算功能如加、减、乘和除等等;且两方的私有数据中至少有一个是密文,即可以进行密文与密文之间的计算,也可以进行密文与明文之间的计算。
参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤102、获取待排序数组A,所述待排序数组A包括N个值为密文的元素。
本发明实施例中,当需要对元素是密文的数组进行排序时,可以获取该数组并将该数组称为待排序数组A,然后可以通过执行如下步骤104实现对待排序数组进行排序。其中,所述待排序数组A中元素的个数为N,N为正整数。
步骤104、对所述待排序数组A进行N-1轮排序。
本发明实施例中,可以对所述待排序数组A进行N-1轮排序,每一轮可以确定待排序数组A中一个元素的位置,进而实现对待排序数组A的排序。其中,每一轮对待排序数组排序的过程中,可以将待排序数组A中值较小/较大的元素移向待排序数组A的一侧,进而确定移至待排序数组A一侧的元素的位置。例如,在需要将待排序数组A中元素按照从大到小排序时,可以将待排序数组A中值较小的元素移向待排序数组的尾部,或者将值较大的元素移向待排序数组的头部;又例如,在需要将待排序数组A中元素按照从小到大排序时,可以将待排序数组A中值较大的元素移向待排序数组的尾部,或者将值较小的元素移向待排序数组的头部,等等;本发明实施例对此不作限制。其中,若每一轮将待排序数组A中值较小的元素移向待排序数组A的尾部,则可以实现对待排序数组A进行从大到小,或将待排序数组A中值较大的元素移向待排序数组A的尾部,则可以实现对待排序数组A进行从从小到大的排序。
本发明的一种实现方式中,每一轮可以将相邻两个元素进行密文比较,然后依据两个元素的密文比较结果,交换这两个相邻元素的位置;其中,每轮对待排序数组A进行排序过程,可以参照如下步骤1042-步骤1046:
步骤1042、确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素。
其中,在将待排序数组A中的元素移向待排序数组的尾部时,则所述已确定位置的一个元素即为上一轮排序后的元素中尾部的最后一个元素,在将待排序数组A中元素移向待排序数组的头部情况下,所述已确定位置的一个元素即为上一轮排序后的元素中头部的第一个元素。
本发明实施例中,每轮对待排序数组A进行排序过程中,可以确定待排序数组A中当前轮需要进行排序的待排序元素。其中,当当前轮为第一轮时,待排序数组A中当前轮需要进行排序的待排序元素,可以是待排序数组A中所有的元素。当当前轮是第I(I的取值范围为2~(N-1),I为正整数)轮时,若是从待排序元素中第一元素开始,将数组中上一轮排序后的元素移向待排序数组A的尾部,则待排序数组A中当前轮需要进行排序的待排序元素,可以是指上一轮排序后的待排序元素中除尾部最后一个元素之外的元素。若是从待排序元素中尾部元素开始,将数组中上一轮排序后的元素移向待排序数组A的头部,则待排序数组A中当前轮需要进行排序的待排序元素,可以是指上一轮排序后的待排序元素中除头部第一个元素之外的元素;本发明实施例对此不作限制。
步骤1044、依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H。
步骤1046、依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置。
在确定待排序元素后,可以从待排序元素的第一个元素开始,从前往后依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H,直到将待排序元素中倒数第二个元素和最后一个元素进行密文比较为止。其中,i为整数,i的取值范围为0~N-1,所述密文比较结果可以是0或1的密文,A[i]与A[i+1]进行密文比较过程在后续进行说明。在每次对相邻两个元素A[i]与A[i+1]进行密文比较后,可以依据这两个相邻元素A[i]与A[i+1]的密文比较结果H,交换这两个相邻元素A[i]与A[i+1]的位置,以将这两个相邻元素中值较大或值较小的元素移向接近待排序数组A的一侧,如数组尾部。其中,可以将密文比较结果H融合到交换这两个相邻元素A[i]与A[i+1]位置的运算中。
当然,在确定待排序元素后,也可以从待排序元素的最后一个元素开始,从后往前依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H,直到将待排序元素中第二个元素和第一个元素进行密文比较为止。在每次对相邻两个元素A[i]与A[i+1]进行密文比较后,可以依据这两个相邻元素A[i]与A[i+1]的密文比较结果H,交换这两个相邻元素A[i]与A[i+1]的位置,以将这两个相邻元素中值较大或值较小元素的移向接近待排序数组A的一侧,如数组头部。
综上,本发明实施例中,可以获取包含N个值为密文元素的待排序数组A,然后对所述待排序数组A进行N-1轮排序,每轮排序执行如下步骤:确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是相邻的上一轮排序后去掉已确定位置的一个元素后的元素;依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置;进而实现对密文数组的排序。
以下对上述步骤1044中,所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H进行说明。
其中,基于相邻两个元素A[i]与A[i+1]进行的密文比较,可以包括:进行A[i]≥A[i+1]的密文比较,和,进行A[i]<A[i+1]的密文比较;当然也可以是进行A[i]≥A[i+1]的密文比较,和,进行A[i]≤A[i+1]的密文比较;本发明实施例对此不作限制。
以下以进行A[i]≥A[i+1]的密文比较为例进行说明。
参照图2a,示出了本发明的一种密文比较方法实施例的步骤流程图,具体可以包括如下步骤:
步骤202a、依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i]-A[i+1])的减法计算任务,得到对应的差值。
步骤204a、基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位。
步骤206a、将所述差值对应二进制的首位的密文确定为所述A[i]≥A[i+1]的密文比较结果。
其中,当当前轮排序对应的待排序元素为M个时,可以进行M-1次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H。
以下以一次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H为例进行说明。
本发明实施例中,可以由上述设备所提供的计算引擎进行所述多方安全计算,所述计算引擎中包括多个计算节点,具体可以由计算引擎中各计算节点协同进行多方安全计算。其中,所述计算引擎中计算节点的数量可以按照需求设置,本发明实施例对此不作限制。
本发明的一种示例中,计算引擎可以将对A[i]与A[i+1]进行密文比较的任务,先转换成计算(A[i]-A[i+1])的计算任务以及提取二进制表示(A[i]-A[i+1])的计算结果中最高位值的计算任务;然后依据最高位值,确定对应的密文比较结果H。其中,计算引擎可以先基于两个输入数据(A[i]和A[i+1])执行(A[i]-A[i+1])减法计算任务和(A[i]-A[i+1])对应计算结果的位提取计算任务。例如,计算引擎可以利用部分计算节点执行减法计算任务,并得到各自持有的减法计算结果,再以各自持有的减法计算结果作为位提取计算任务的私密数据,利用一次比特位置换的数据交互执行最高位提取,得到位提取的计算结果。
其中,在计算过程中,可以将输入数据按照分散规则分散为多个数值,然后将每个数值分散存储到各个计算节点中,各计算节点根据分散存储的数值进行协同计算;其中,所述分散规则可以按照需求设置如加法规则等,本发明实施例对此不作限制。其中,所述所有的数值组成所述输入数据的密文,每个数值可以称为输入数据的密文分片,即所有的密文分片组成所述输入数据的密文,每个密文分片可以被分散存储到一个计算节点。对应的,待排序数组中每个元素对应密文分片可以被分散到各计算节点。
本发明的一个示例中,A[i]包括密文分片a11、a12、a13和a14,A[i+1]包括密文分片a21、a22、a23和a24,其中,a11和a21分散在计算节点S1上,a12和a22分散在计算节点S2上,a13和a23分散在计算节点S3上,a14和a24分散在计算节点S1上。计算引擎可以利用计算节点S1、S2、S3和S4执行减法计算:例如,令计算节点S1计算a11-a21的指令,得到对应的计算结果x1;令计算节点S2计算a12×a22的指令,得到对应的计算结果得到x2;令计算节点S3计算a13×a23的指令,得到对应的计算结果得到xa;令计算节点S4计算a14×a24的指令,得到对应的计算结果得到xb
其中,可以各计算节点各自持有的减法计算结果作为位提取计算的私密数据,对私密数据进行位提取;例如,令多个所述计算节点利用k轮次1比特置换数据的数据交互得到各自持有的计算结果,所述计算结果用于提取(A[i]-A[i+1])差值的二进制位。其中,k为(A[i]-A[i+1])差值的待提取的二进制位数。在此,四个计算节点通过本地进行位计算生成包含有可抵消1比特随机数的中间数据(1比特),并通过k轮次的中间数据的数据交互得到计算结果。
本发明的一个示例中,各计算节点分别初始化用于输出的比特位值{c1,c′1},{c2,c′2},{ca,c′a},{cb,c′b};以及令所述计算节点S1和计算节点S2共享随机数r12和b12;以及令所述计算节点S3和计算节点S4共享随机数bab;其中,初始化的各比特位值举例为0。所述随机数r12、b12和bab是基于提取位数k而生成的二进制随机数。
然后可以令计算节点S1和计算节点S2利用随机数r12对各自持有的私密数据x1和x2对第k位进行逻辑处理,以得到具有第k位统一的二进制中间数据u1和u2
在此,令计算节点S1进行基于公式
Figure BDA0002171647140000121
的本地计算得到中间数据u1;并提供给计算节点S3;以及令计算节点S2进行基于公式u2=x2[1:k]∧r12本地计算得到中间数据u2
需要说明的是,根据实际设计需要,上述各计算节点的逻辑处理可以被调整,其他为k轮次循环而进行预处理,并得到具有第k位统一的二进制中间数据u1和u2的方式应视为基于本申请所提供的示例而进行数学计算调整得到的一种具体示例。
令计算节点S1将中间数据u1发送给计算节点S3,并由计算节点S3进行基于公式u1∧xa的逻辑计算并得到中间数据ua
基于k值而设置以下循环计算:各计算节点对私密数据x1的第j位和输出比特位置进行带有基于所共享的随机数b12或bab的逻辑计算,并得到第j轮次的中间数据;以及将每轮次得到的中间数据进行置换处理,并赋值相应的输出比特位;其中,计算节点S1与计算节点S3进行中间数据的置换处理,以及计算节点S2与计算节点S4进行中间数据的置换处理。
例如,参见如下利用程序语言习惯来描述的基于k值而设置的循环计算:
For(j=1;j<=k-1;j=j+1){
S1计算
Figure BDA0002171647140000122
并将t′1发送至S3.
S2计算
Figure BDA0002171647140000123
并将t′2发送至S4.
Sa计算
Figure BDA0002171647140000124
并将t′a发送至S1
Sb计算
Figure BDA0002171647140000125
并将t′b发送至S2
S1赋值
Figure BDA0002171647140000126
S2赋值
Figure BDA0002171647140000127
S3赋值
Figure BDA0002171647140000128
Sb赋值
Figure BDA0002171647140000131
然后各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果。
例如,计算节点S1基于公式
Figure BDA0002171647140000132
的本地计算得到计算结果c′1;计算节点S2进行基于公式
Figure BDA0002171647140000133
本地计算得到计算结果c′2;计算节点S3进行基于公式
Figure BDA0002171647140000134
本地计算得到计算结果ca;计算节点S4进行基于公式
Figure BDA0002171647140000135
本地计算得到计算结果cb
其中,由于二进制的首位可以表示该二进制对应十进制数值的正负,因此可以提取(A[i]-A[i+1])的差值对应二进制的首位,来判断A[i]是否大于或等于A[i+1]。因此可以令k=1,进而利用一次比特位置换的数据交互执行最高位提取,得到(A[i]-A[i+1])的差值对应二进制的首位。
其中,当(A[i]-A[i+1])差值对应二进制的首位为0时,说明A[i]-A[i+1]的差值为正数,可以确定A[i]大于或等于A[i+1];当(A[i]-A[i+1])差值对应二进制的首位为1时,说明A[i]-A[i+1]的差值为负数,可以确定A[i]小于A[i+1]。因此可以将1与所述差值对应二进制的首位的差值,确定为所述A[i]≥A[i+1]的密文比较结果H;进而当A[i]-A[i+1]的差值对应二进制首位的密文为0的密文时,所述A[i]≥A[i+1]的密文比较结果H为1的密文,当A[i]-A[i+1]的差值对应二进制首位的密文为1的密文时,所述A[i]≥A[i+1]的密文比较结果H为0的密文。
以下以进行A[i]<A[i+1]的密文比较为例进行说明。
参照图2b,示出了本发明的一种密文比较方法可选实施例的步骤流程图,具体可以包括如下步骤:
步骤202b、依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i+1]-A[i])的减法计算任务,得到对应的差值。
步骤204b、基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文。
步骤202b-步骤204b,与上述步骤202a-步骤204a类似,在此不再赘述。
步骤206b、将所述差值对应二进制的首位的密文确定为所述A[i]<A[i+1]的密文比较结果。
其中,当(A[i+1]-A[i])差值对应二进制的首位为0时,说明A[i+1]-A[i]的差值为正数,可以确定A[i+1]大于或等于A[i];当(A[i+1]-A[i])差值对应二进制的首位为1时,说明A[i+1]-A[i]的差值为负数,可以确定A[i+1]小于A[i];因此可以将所述差值对应二进制的首位,确定为所述A[i]<A[i+1]的密文比较结果;进而当A[i+1]-A[i]的差值对应二进制首位的密文为0的密文时,所述A[i]<A[i+1]的密文比较结果H为0的密文,当A[i+1]-A[i]的差值对应二进制首位的密文为1的密文时,所述A[i]<A[i+1]的密文比较结果H为1的密文。
本发明的另一个实施例中,在对待排序数组A进行排序时,也可以对待排序数组A中元素对应的下标进行排序;进而可以得到待排序数组A中元素排序后的下标。
因此本发明实施例可以构造辅助数组B;将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的下标。其中,所述待排序数组A中初始各元素的下标,可以是指待排序数组A未排序之前的各元素对应的下标。例如,待排序数组A=[0,4,1],在对A排序之前将A中各元素对应的下标,添加到B中对应位置,得到B=[0,1,2]。
进而在所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H之后,可以依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置。
本发明的一个示例中,假设每轮对待排序数组A是从待排序元素中第一个元素开始排序,将值较大或值较小的元素移向待排序数组A的底部,以下以一轮排序为例进行说明。
其中,若是需要对所述待排序数组A中的元素进行从大到小的排序,则每轮排序可以将值较小的元素移动至待排序数组A的尾部。以下以一轮排序过程中一次交换A[i]和A[i+1]的位置,以及交换B[i]和B[i+1]的位置为了进行说明。
参照图3,示出了本发明的一种数据处理方法可选实施例的步骤流程图。
步骤302、确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的待排序元素中除已确定位置的一个元素之外的元素。
本发明实施例中,若当前轮为第一轮,则将待排序数组A中的所有元素确定为待排序元素,然后执行步骤304-步骤306。若当前轮为第I轮排序,则可以确定当前轮排序的上一轮排序对应排序后的待排序元素,去掉该上一轮排序对应的排序后待排序元素的最后一个元素,得到当前轮排序对应的待排序元素。
步骤304、若是进行A[i]≥A[i+1]的密文比较,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1],将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。
本发明实施例中,若是进行A[i]≥A[i+1]的密文比较,则可以通过以下一种方式交换A[i]和A[i+1]的位置:将A[i]赋值为:(1-H)*A[i]+H*A[i+1],以及将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1]。进而当A[i]小于A[i+1]时,A[i]≥A[i+1]的密文比较结果H为1的密文,此时能够实现将A[i]赋值为A[i+1],将A[i+1]赋值为A[i],达到将值较小的元素向待排序数组A尾部移动的效果。当A[i]大于或等于A[i+1]时,A[i]≥A[i+1]的密文比较结果H为0的密文,此时将A[i]赋值为A[i],将A[i+1]赋值为A[i+1],达到将A[i]与A[i+1]位置保持不变的效果。对应的,可以通过以下一种方式交换B[i]和B[i+1]的位置:将B[i]赋值为:(1-H)*B[i]+H*B[i+1],以及将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。
本发明的一个示例中,上述步骤304可以参照如下代码实现:
H=(A[i]≥A[i+1])
temp1=A[i]
temp2=A[i+1]
index1=B[i]
index2=B[i+1]
A[i]=(1-H)*(temp1)+H*temp2
A[i+1]=H*temp1+(1-H)*temp2
B[i]=(1-H)*(index1)+H*index2
B[i+1]=H*index1+(1-H)*index2
例如:待排序数组A=[0,4,1],对应的辅助数组B=[0,1,2],将待排序数组A中的元素从大到小排序;其中,可以对待排序数组进行两轮排序:
第一轮排序:待排序元素包括:A[0]=0、A[1]=4和A[2]=1;
第一次排序:将A[0]与A[1]进行比较,然后依据(A[0]≥A[1])密文比较结果H,交换A[0]与A[1]的位置:例如:
H=(A[0]≥A[1])
temp1=A[0]
temp2=A[1]
index1=B[0]
index2=B[1]
A[0]=(1-H)*(temp1)+H*temp2
A[1]=H*temp1+(1-H)*temp2
B[0]=(1-H)*(index)+H*index
B[1]=H*index+(1-H)*index
第一轮排序后,数组A中最小的元素排在了数组尾部的最后一个,下一轮比较时,将去掉最后一个元素后的元素作为待排序元素;或者,第一轮排序后,数组A中最大的元素排在了数组头部的第一个;下一轮比较时,将去掉第一个元素后的元素作为待排序元素。
经过两轮排序后完成了对待排序数组A的从大到小的排序,得到排序后的待排序数组A=[4,1,0],B=[1,2,0]。
步骤306、若是进行A[i]<A[i+1]的密文比较,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1],将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
若是进行A[i]<A[i+1]的密文比较,可以通过以下一种方式交换A[i]和A[i+1]的位置:将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。进而当A[i]小于A[i+1]时,A[i]<A[i+1]的密文比较结果H为0的密文,此时能够实现将A[i]赋值为A[i+1],将A[i+1]赋值为A[i],达到将值较小的元素向待排序数组A底部移动的效果。当A[i]大于或等于A[i+1]时,H为1的密文,此时将A[i]赋值为A[i],将A[i+1]赋值为A[i+1],达到将A[i]与A[i+1]位置保持不变的效果。对应的,可以通过以下一种方式交换B[i]和B[i+1]的位置:将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
本发明的一个示例中,上述步骤306可以参照如下代码实现:
H=(A[i]<A[i+1])
temp1=A[i]
temp2=A[i+1]
index1=B[i]
index2=B[i+1]
A[i]=H*(temp1)+(1-H)*temp2
A[i+1]=(1-H)*temp1+H*temp2
B[i]=H*(index1)+(1-H)*index2
B[i+1]=(1-H)*index2+H*index2
例如:待排序数组A=[0,4,1],对应的辅助数组B=[0,1,2],将待排序数组A中的元素从大到小排序;其中,可以对待排序数组进行两轮排序:
第一轮排序:待排序元素包括:A[0]=0、A[1]=4和A[2]=1;
第一次排序:将A[0]与A[1]进行比较,然后依据A[0]<A[1]密文比较结果H,交换A[0]与A[1]的位置:例如:
H=(A[0]<A[1])
temp1=A[0]
temp2=A[1]
index1=B[0]
index2=B[1]
A[0]=H*(temp1)+(1-H)*temp2
A[1]=(1-H)*temp1+H*temp2
B[0]=H*(index1)+(1-H)*index2
B[1]=(1-H)*index1+H*index2
经过两轮排序后完成了对待排序数组A的排序,得到排序后的待排序数组A=[4,1,0],B=[1,2,0]。
综上,本发明实施例中,若是进行A[i]≥A[i+1]的密文比较,将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];以及则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。若是进行A[i]<A[i+1]的密文比较,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1];以及将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1];进而实现对待排序数组进行降序排序。
本发明实施例中,若是需要对所述待排序数组A中的元素进行从小到大的排序,则每轮排序可以将值较大的元素移动至待排序数组A的底部(即从左向右移动)。以下以一轮排序过程中一次交换A[i]和A[i+1]的位置,以及交换B[i]和B[i+1]的位置为了进行说明。
可以参照如下步骤402-步骤406。
参照图4,示出了本发明的又一种数据处理方法可选实施例的步骤流程图。
步骤402、确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的待排序元素中除已确定位置的一个元素之外的元素。
步骤404、若是进行A[i]<A[i+1]的密文比较,将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。
步骤406、若是进行A[i]≥A[i+1]的密文比较,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1];将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
本发明实施例中,若是进行A[i]<A[i+1]的密文比较,则可以通过以下一种方式交换A[i]和A[i+1]的位置:将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为H*A[i]+(1-H)*A[i+1]。进而当A[i]大于或等于A[i+1]时,A[i]<A[i+1]的密文比较结果H为0的密文,此时能够实现将A[i]赋值为A[i+1],将A[i+1]赋值为A[i],达到将值较大的元素向待排序数组A底部移动的效果。当A[i]小于A[i+1]时,A[i]<A[i+1]的密文比较结果H为1的密文,此时将A[i]赋值为A[i],将A[i+1]赋值为A[i+1],达到将A[i]与A[i+1]位置保持不变的效果。对应的,可以将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。可参照如下代码实现:
H=(A[i]<A[i+1])
temp1=A[i]
temp2=A[i+1]
index1=B[i]
index2=B[i+1]
A[i]=(1-H)*(temp1)+H*temp2
A[i+1]=H*temp1+(1-H)*temp2
B[i]=(1-H)*(index1)+H*index2
B[i+1]=H*index1+(1-H)*index2
此外,可能对待排序数组A进行小于(N-1)轮排序,就可以完成对待排序数组A中所有元素的排序。因此本发明的一个可选实施例中,可以每轮对所述待排序数组A和辅助数组B进行排序后,判断本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同;若相同,则停止执行对所述待排序数组A和辅助数组B的下一轮排序。
例如:待排序数组A=[1,4,2,5,6,7],对应的辅助数组B=[0,1,2,3,4,5];若对待排序数组A进行从小到大的排序,则第一轮排序后,B=[0,2,1,3,4,5]。第二轮排序后,B=[0,2,1,3,4,5]。在第二轮排序后,可以将第二轮排序后的B=[0,2,1,3,4,5],与第一轮排序后的B=[0,2,1,3,4,5]进行比对;由于这两轮排序后的辅助数组相同,则说明经过两轮排序后,待排序数组A中的元素是有序的,此时可以停止对待排序数组A进行下一轮排序。
综上,本发明实施例中,若是进行A[i]<A[i+1]的密文比较,将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];以及将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1];若是进行A[i]≥A[i+1]的密文比较,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1];以及将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1];进而实现对待排序数组进行升序排序。
再次,本发明实施例中,每轮对所述待排序数组A和辅助数组B进行排序后,判断本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同;若相同,则停止执行对所述待排序数组A和辅助数组B的下一轮排序;进而在未执行N-1轮之前,待排序数组A中的元素是有序的,则可以无需再进行下一轮排序,从而减少无效排序的轮次,提高排序效率。
需要说明的是,以上示例中,待排序数组A中的数值均是指该数值对应的密文。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明一种数据处理装置实施例的结构框图,具体可以包括如下模块:
待排序数组获取模块502,用于获取待排序数组A,所述待排序数组A包括N个值为密文的元素;
排序模块504,用于对所述待排序数组A进行N-1轮排序,每轮排序由如下子模块执行:
待排序元素确定子模块5042,用于确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素;
密文比较子模块5044,用于依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;
元素位置交换子模块5046,用于依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置;
其中,所述密文比较结果H为0或1的密文,N为正整数,i为整数,i的取值范围为0~N-1。
参照图6,示出了本发明一种数据处理装置可选实施例的结构框图。
本发明一个可选实施例中,所述密文比较子模块5044可以包括:
第一元素差值计算单元50442,用于若是进行A[i]≥A[i+1]的密文比较,则依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i]-A[i+1])的减法计算任务,得到对应的差值;
第一差值首位提取单元50444,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
第一比较结果确定单元50446,用于将所述差值对应二进制的首位的密文确定为所述A[i]≥A[i+1]的密文比较结果。
本发明一个可选实施例中,所述密文比较子模块5044可以包括:
第二元素差值计算单元50448,用于若是进行A[i]<A[i+1]的密文比较,则依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i+1]-A[i])的减法计算任务,得到对应的差值;
第二差值首位提取单元504410,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
第二比较结果确定单元504412,用于将所述差值对应二进制的首位的密文确定为所述A[i]<A[i+1]的密文比较结果。
本发明一个可选实施例中,所述元素位置交换子模块5046可以包括:
第一元素赋值单元50462,用于若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];
第二元素赋值单元50464,用于若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
本发明一个可选实施例中,所述元素位置交换子模块5046可以包括:
第三元素赋值单元50466,用于若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];
第四元素赋值单元50468,用于若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
本发明一个可选实施例中,所述的装置还可以包括:
辅助数组构造模块506,用于构造辅助数组B;
元素下标赋值模块,用于将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的下标;
下标位置交换模块508,用于在所述元素位置交换子模块依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H之后,依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置。
本发明一个可选实施例中,所述下标位置交换模块508可以包括:
第一下标赋值子模块5082,用于若是进行A[i]≥A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为H*B[i]+(1-H)*B[i+1];
第二下标赋值子模块5084,用于若是进行A[i]≥A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
本发明一个可选实施例中,所述下标位置交换模块508可以包括:
第三下标赋值子模块5086,用于若是进行A[i]<A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1];
第四下标赋值子模块5088,用于若是进行A[i]<A[i+1]的密文比较,且若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为:H*B[i]+(1-H)*B[i+1]。
本发明一个可选实施例中,所述的装置还可以包括:
辅助数组判断模块5010,用于每轮对所述待排序数组A和辅助数组B进行排序后,判断本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同;
排序停止模块5012,用于若本轮排序后的辅助数组B和上一轮排序后的辅助数组B是否相同,则停止执行对所述待排序数组A和辅助数组B的下一轮排序。
本发明实施例中,可以获取包含N个值为密文元素的待排序数组A,然后对所述待排序数组A进行N-1轮排序,每轮排序执行如下步骤:确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是相邻的上一轮排序后去掉已确定位置的一个元素后的元素;依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置;进而实现对密文数组的排序。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本发明实施例中一个或多个所述的数据处理方法。
本发明实施例还提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述本发明实施例中一个或多个所述的数据处理方法。
本发明实施例一个示例中提供了一种电子设备,例如服务器,图7示出了可以实现根据本发明的服务器,例如管理服务器、存储服务器、应用服务器、云控服务、服务器集群等。该服务器传统上包括处理器710和以存储器720形式的计算机程序产品或者计算机可读存储介质。存储器720可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。存储器720具有用于执行上述方法中的任何方法步骤的程序代码731的存储空间730。例如,用于程序代码的存储空间730可以包括分别用于实现上面的方法中的各种步骤的各个程序代码731。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为便携式或者固定存储单元。该存储单元可以具有与图7的服务器中的存储器720类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码,即可以由例如诸如710之类的处理器读取的代码,这些代码当由服务器运行时,导致该服务器执行上面所描述的方法中的各个步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据处理方法、一种数据处理装置和一种电子设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (10)

1.一种数据处理方法,其特征在于,包括:
获取待排序数组A,所述待排序数组A包括N个值为密文的元素;
对所述待排序数组A进行N-1轮排序,每轮排序执行如下步骤:
确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素;
依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;
依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置;
其中,所述密文比较结果H为0或1的密文,N为正整数,i为整数,i的取值范围为0~N-1。
2.根据权利要求1所述的方法,其特征在于,若是进行A[i]≥A[i+1]的密文比较,则所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H,包括:
依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i]-A[i+1])的减法计算任务,得到对应的差值;
基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
将所述差值对应二进制的首位的密文确定为所述A[i]≥A[i+1]的密文比较结果。
3.根据权利要求1所述的方法,其特征在于,若是进行A[i]<A[i+1]的密文比较,则所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H,包括:
依次基于所述待排序元素中相邻两个元素A[i]与A[i+1]执行(A[i+1]-A[i])的减法计算任务,得到对应的差值;
基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
将所述差值对应二进制的首位的密文确定为所述A[i]<A[i+1]的密文比较结果。
4.根据权利要求2所述的方法,其特征在于,所述依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,包括:
若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];
若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
5.根据权利要求3所述的方法,其特征在于,所述依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,包括:
若是对所述待排序数组A中的元素进行从小到大排序,则将A[i]赋值为:(1-H)*A[i]+H*A[i+1],将A[i+1]赋值为:H*A[i]+(1-H)*A[i+1];
若是对所述待排序数组A中的元素进行从大到小排序,则将A[i]赋值为:H*A[i]+(1-H)*A[i+1],将A[i+1]赋值为:(1-H)*A[i]+H*A[i+1]。
6.根据权利要求2或3所述的方法,其特征在于,所述的方法还包括:
构造辅助数组B;
将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的下标;
在所述依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H之后,所述方法还包括:
依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置。
7.根据权利要求6所述的方法,其特征在于,若是进行A[i]≥A[i+1]的密文比较,则所述依据所述密文比较结果H,交换数组B中相邻两个元素A[i]与A[i+1]对应的下标B[i]与B[i+1]的位置包括:
若是对所述待排序数组A中的元素进行从大到小排序,则将B[i]赋值为:(1-H)*B[i]+H*B[i+1],将B[i+1]赋值为H*B[i]+(1-H)*B[i+1];
若是对所述待排序数组A中的元素进行从小到大排序,则将B[i]赋值为:H*B[i]+(1-H)*B[i+1],将B[i+1]赋值为:(1-H)*B[i]+H*B[i+1]。
8.一种数据处理装置,其特征在于,包括:
待排序数组获取模块,用于获取待排序数组A,所述待排序数组A包括N个值为密文的元素;
排序模块,用于对所述待排序数组A进行N-1轮排序,每轮排序由如下子模块执行:
待排序元素确定子模块,用于确定当前轮待排序数组A中待排序元素,其中,当前轮排序的待排序元素是上一轮排序后的元素中除已确定位置的一个元素之外的元素;
密文比较子模块,用于依次将所述待排序元素中相邻两个元素A[i]与A[i+1]进行密文比较,得到对应的密文比较结果H;
元素位置交换子模块,用于依据所述密文比较结果H,交换所述相邻两个元素A[i]与A[i+1]的位置,以确定当前轮排序的待排序元素中一个元素的位置;
其中,所述密文比较结果H为0或1的密文,N为正整数,i为整数,i的取值范围为0~N-1。
9.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-7中一个或多个所述的数据处理方法。
10.一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-7中一个或多个所述的数据处理方法。
CN201910764983.9A 2019-08-19 2019-08-19 一种数据处理方法、装置和电子设备 Active CN112395623B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910764983.9A CN112395623B (zh) 2019-08-19 2019-08-19 一种数据处理方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910764983.9A CN112395623B (zh) 2019-08-19 2019-08-19 一种数据处理方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN112395623A true CN112395623A (zh) 2021-02-23
CN112395623B CN112395623B (zh) 2023-09-29

Family

ID=74603453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910764983.9A Active CN112395623B (zh) 2019-08-19 2019-08-19 一种数据处理方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN112395623B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022179023A1 (zh) * 2021-02-25 2022-09-01 华为技术有限公司 一种排序装置及方法

Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510349B1 (en) * 2006-12-06 2013-08-13 Zillow, Inc. Multi-faceted search
US20140133651A1 (en) * 2011-07-05 2014-05-15 Nec Corporation Encryption device, cipher-text comparison system, cipher-text comparison method, and cipher-text comparison program
DE202015104128U1 (de) * 2015-08-06 2015-11-11 CompuGroup Medical AG Datenzugriffssystem
KR20150137786A (ko) * 2014-05-30 2015-12-09 이니텍(주) 암호화 데이터 정렬 유지를 위한 인코딩 방법
CN105488422A (zh) * 2015-11-19 2016-04-13 上海交通大学 基于同态加密隐私数据保护的编辑距离计算系统
CN105556583A (zh) * 2014-05-21 2016-05-04 富士电机株式会社 信息处理装置、程序、及记录介质
CN105917400A (zh) * 2014-01-17 2016-08-31 日本电信电话株式会社 元素复制装置、元素复制方法、以及程序
CN106022360A (zh) * 2016-05-11 2016-10-12 蒋林智 一种统计学习中基于密文的数据二分类方法
CN106161405A (zh) * 2015-04-21 2016-11-23 上海交通大学 基于同态加密机制的隐私可保护信息安全计算实现方法
CN107292192A (zh) * 2017-05-25 2017-10-24 南京邮电大学 一种云计算环境中低调整率的保序加密方法
CN109426484A (zh) * 2017-08-28 2019-03-05 华为技术有限公司 一种数据排序装置、方法及芯片
US20190109701A1 (en) * 2016-08-02 2019-04-11 X-Logos, LLC Methods and systems for enhanced data-centric homomorphic encryption sorting using geometric algebra
US20190363878A1 (en) * 2018-05-28 2019-11-28 Hitachi, Ltd. Value comparison server, value comparison encryption system, and value comparison method

Patent Citations (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8510349B1 (en) * 2006-12-06 2013-08-13 Zillow, Inc. Multi-faceted search
US20140133651A1 (en) * 2011-07-05 2014-05-15 Nec Corporation Encryption device, cipher-text comparison system, cipher-text comparison method, and cipher-text comparison program
CN105917400A (zh) * 2014-01-17 2016-08-31 日本电信电话株式会社 元素复制装置、元素复制方法、以及程序
CN105556583A (zh) * 2014-05-21 2016-05-04 富士电机株式会社 信息处理装置、程序、及记录介质
KR20150137786A (ko) * 2014-05-30 2015-12-09 이니텍(주) 암호화 데이터 정렬 유지를 위한 인코딩 방법
CN106161405A (zh) * 2015-04-21 2016-11-23 上海交通大学 基于同态加密机制的隐私可保护信息安全计算实现方法
DE202015104128U1 (de) * 2015-08-06 2015-11-11 CompuGroup Medical AG Datenzugriffssystem
CN105488422A (zh) * 2015-11-19 2016-04-13 上海交通大学 基于同态加密隐私数据保护的编辑距离计算系统
CN106022360A (zh) * 2016-05-11 2016-10-12 蒋林智 一种统计学习中基于密文的数据二分类方法
US20190109701A1 (en) * 2016-08-02 2019-04-11 X-Logos, LLC Methods and systems for enhanced data-centric homomorphic encryption sorting using geometric algebra
CN107292192A (zh) * 2017-05-25 2017-10-24 南京邮电大学 一种云计算环境中低调整率的保序加密方法
CN109426484A (zh) * 2017-08-28 2019-03-05 华为技术有限公司 一种数据排序装置、方法及芯片
US20190363878A1 (en) * 2018-05-28 2019-11-28 Hitachi, Ltd. Value comparison server, value comparison encryption system, and value comparison method

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
任晖等: "基于安全比较码的云环境隐私保护排序方法", 《信息科技》 *
席林通: "基于C语言中排序法的分析比较", 《信息科技》 *
钱小强: "安全多方排序的研究", 《信息科技》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022179023A1 (zh) * 2021-02-25 2022-09-01 华为技术有限公司 一种排序装置及方法

Also Published As

Publication number Publication date
CN112395623B (zh) 2023-09-29

Similar Documents

Publication Publication Date Title
US20210158216A1 (en) Method and system for federated learning
EP2701337B1 (en) Secret sharing method and system
JP7328237B2 (ja) コンピュータにより実施される投票処理およびシステム
CN107210006B (zh) 不一致检测方法、检测系统、检测装置以及记录介质
WO2016208437A1 (ja) 秘密計算装置、秘密計算方法、およびプログラム
CN112464155B (zh) 一种数据处理方法、多方安全计算系统和电子设备
CN112800466A (zh) 基于隐私保护的数据处理方法、装置和服务器
CN111026359A (zh) 多方联合判定隐私数据的数值范围的方法和装置
CN105956921A (zh) 一种银行卡号自选方法及装置
JP7031682B2 (ja) 秘密計算装置、システム、方法、プログラム
CN112668748A (zh) 一种预测方法、装置和电子设备
CN114925786A (zh) 基于秘密分享的纵向联邦线性支持向量分类方法
CN113438237B (zh) 数据安全协同计算方法及系统
CN112395623B (zh) 一种数据处理方法、装置和电子设备
CN112668038A (zh) 一种模型训练方法、装置和电子设备
CN112668016A (zh) 一种模型训练方法、装置和电子设备
CN112926090A (zh) 基于差分隐私的业务分析方法及装置
US11599681B2 (en) Bit decomposition secure computation apparatus, bit combining secure computation apparatus, method and program
CN111159730B (zh) 数据处理方法、查询方法、装置、电子设备和系统
CN116388954B (zh) 通用密态数据安全计算方法
CN112434317A (zh) 数据处理方法、装置、设备及存储介质
JP2023158097A (ja) 分散型システムの処理ステップを制御するための、コンピュータにより実施されるシステム及び方法
CN112395624B (zh) 一种数据处理方法、装置和电子设备
CN112182593A (zh) 一种数据处理方法、装置和电子设备
CN112668037B (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