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

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

Info

Publication number
CN112395624B
CN112395624B CN201910765881.9A CN201910765881A CN112395624B CN 112395624 B CN112395624 B CN 112395624B CN 201910765881 A CN201910765881 A CN 201910765881A CN 112395624 B CN112395624 B CN 112395624B
Authority
CN
China
Prior art keywords
elements
sorted
reference element
ciphertext
comparison result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910765881.9A
Other languages
English (en)
Other versions
CN112395624A (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 CN201910765881.9A priority Critical patent/CN112395624B/zh
Publication of CN112395624A publication Critical patent/CN112395624A/zh
Application granted granted Critical
Publication of CN112395624B publication Critical patent/CN112395624B/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/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/401Transaction verification
    • G06Q20/4014Identity check for transactions
    • G06Q20/40145Biometric identity checks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Accounting & Taxation (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Finance (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Mathematical Physics (AREA)
  • Storage Device Security (AREA)

Abstract

本发明实施例提供了一种数据处理方法、装置和电子设备,其中,所述方法包括:获取待排序数组A中的待排序元素;针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素;依次将待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将密文比较结果恢复为明文;依据密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;将放置于基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作;从而能够快速对待排序数组中的元素进行排序。

Description

一种数据处理方法、装置和电子设备
技术领域
本发明涉及数据处理领域,特别是涉及一种数据处理方法、装置和电子设备。
背景技术
随着计算机、通讯技术以及互联网技术的不断发展,大多数用户会通过电子设备进行信息的传输与存储,例如将文件上传到云端存储,向其他用户发送文件等等。其中,为了保证信息的安全,通常会对数据进行加密,例如在数据存储的过程中,会在对应存储的电子设备上对数据进行加密如在服务器、终端上进行数据加密;又如在数据传输的过程中对数据进行加密,如数据在终端与服务器传输的过程中对数据进行加密。
当电子设备需要使用这些数据时,需要先对数据进行解密,获取信息的明文后,再对数据进行相应的处理,从而导致信息存在安全隐患;例如,在电子支付场景中,用户用于支付的人脸数据明文在支付运算中对银联可见,若该人脸数据被窃取,同时将该人脸数据与对应的用户账户等信息关联,那么会对用户造成很大风险。为解决该问题,可以基于密文进行数据计算,以充分保证用户信息的安全性。
通常在基于密文计算的某些场景下,需要对一组数据进行排序,但是由于这些数据都是密文,无法判断哪个数据大,哪个数据小,导致无法对密文数据进行排序。
发明内容
本发明实施例提供一种数据处理方法,以对密文数组中的元素排序。
相应的,本发明实施例还提供了一种数据处理装置和电子设备,用以保证上述方法的实现及应用。
为了解决上述问题,本发明实施例公开了一种数据处理方法,具体包括:获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素;依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。
可选地,所述待排序元素为A[k1]~A[k2],其中,A[s]为基准元素,A[i] 为其他元素,k2和k1的差值为n,s、i、k1、k2和n均为整数,i、s的取值范围为k1~k2,s不等于i。
可选地,若是进行A[i]≥A[s]的密文比较,所述依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,包括:依次基于其他元素A[i]与基准元素A[s]执行(A[i]-A[s])减法计算任务,得到对应的差值;基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;将所述差值对应二进制的首位的密文确定为所述A[i]≥A[s]的密文比较结果。
可选地,若是进行A[i]<A[s]的密文比较,所述依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,包括:依次基于其他元素A[i]与基准元素A[s]执行(A[s]-A[i])减法计算任务,得到对应的差值;基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;将所述差值对应二进制的首位的密文确定为所述A[i]<A[s]的密文比较结果。
可选地,若s为k2,则所述依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧,包括:设置变量j,并令j=k1-1,i=k1;执行循环次数为n的循环计算:若需要对所述待排序数组A进行从小到大的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为1;若是,则将所述j 加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;若需要对所述待排序数组A进行从大到小的排序,则判断 A[i]≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i] 与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
可选地,若s为k2,则所述依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧,包括:设置变量i和j,并令j=k1-1, i=k1;执行循环次数为n的循环计算:若需要对所述待排序数组A进行从小到大的排序,则判断A[i]<A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;若需要对所述待排序数组A进行从大到小的排序,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
可选地,所述的方法还包括:构造辅助数组B;将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的初始下标;在所述将所述密文比较结果恢复为明文之后,所述的方法还包括:依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置。
可选地,所述依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置,包括:确定所述辅助数组B中与所述待排序元素中其他元素对应的其他初始下标,和所述基准元素对应的基准初始下标;依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧。
可选地,所述依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧,包括:在所述将所述j加1后,交换B[i]与B[j]的位置;待执行n次循环计算后,交换所述B[s]与B[j+1]的位置。
本发明实施例还公开了一种数据处理装置,具体包括:待排序数组获取模块,用于获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;排序模块,用于针对待排序元素执行排序操作;所述排序模块包括:基准元素选定子模块,用于从所述待排序元素中选定基准元素;比较结果恢复子模块,用于依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;元素位置放置子模块,用于依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;循环子模块,用于将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。
可选地,所述待排序元素为A[k1]~A[k2],其中,A[s]为基准元素,A[i] 为其他元素,k2和k1的差值为n,s、i、k1、k2和n均为整数,i、s的取值范围为k1~k2,s不等于i。
可选地,所述比较结果恢复子模块包括:第一元素差值计算单元,用于若是进行A[i]≥A[s]的密文比较,则依次基于其他元素A[i]与基准元素A[s] 执行(A[i]-A[s])减法计算任务,得到对应的差值;第一差值首位提取单元,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;第一比较结果确定单元,用于将所述差值对应二进制的首位的密文确定为所述A[i]≥A[s]的密文比较结果。
可选地,所述比较结果恢复子模块包括:第二元素差值计算单元,用于若是进行A[i]<A[s]的密文比较,依次基于其他元素A[i]与基准元素A[s]执行 (A[s]-A[i])减法计算任务,得到对应的差值;第二差值首位提取单元,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;第二比较结果确定单元,用于将所述差值对应二进制的首位的密文确定为所述A[i]<A[s]的密文比较结果。
可选地,所述元素位置放置子模块包括:第一变量设置单元,用于若s 为k2,则设置变量j,并令j=k1-1,i=k1;第一循环计算单元,用于执行循环次数为n的循环计算;所述第一循环计算单元包括:第一循环处理子单元,用于若需要对所述待排序数组A进行从小到大的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;第二循环处理子单元,用于若需要对所述待排序数组A进行从大到小的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换 A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;第一元素位置交换单元,用于待执行n次循环计算后,交换所述A[s] 与A[j+1]的位置。
可选地,所述元素位置放置子模块包括:第二变量设置单元,用于若s 为k2,则设置变量i和j,并令j=k1-1,i=k1;第二循环计算单元,用于执行循环次数为n的循环计算;所述第二循环计算单元包括:第三循环处理子单元,用于若需要对所述待排序数组A进行从小到大的排序,则判断A[i]<A[s] 的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j] 的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;第四循环处理子单元,用于若需要对所述待排序数组A进行从大到小的排序,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;第二元素位置交换单元,用于待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
可选地,所述的装置还包括:辅助数组构造模块,用于构造辅助数组B;元素下标赋值模块,用于将辅助数组B中各元素依次赋值为所述待排序数组 A中初始各元素的初始下标;下标位置调整模块,用于在比较结果恢复子模块在所述将所述密文比较结果恢复为明文之后,依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置。
可选地,所述下标位置调整模块包括:初始下标确定子模块,用于确定所述辅助数组B中与所述待排序元素中其他元素对应的其他初始下标,和所述基准元素对应的基准初始下标;下标位置放置子模块,用于依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧。
可选地,所述下标位置放置子模块包括:第一下标位置交换单元,用于在所述将所述j加1后,交换B[i]与B[j]的位置;第二下标位置交换单元,用于待执行n次循环计算后,交换所述B[s]与B[j+1]的位置。
本发明实施例还公开了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本发明实施例中一个或多个所述的数据处理方法。
本发明实施例还公开了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述本发明实施例中一个或多个所述的数据处理方法。
与现有技术相比,本发明实施例包括以下优点:
本发明实施例中,获取待排序数组A中的待排序元素,所述待排序数组 A中的待排序元素为密文;针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素;依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。进而每次能够将待排序元素划分为两个部分,在分别对这两个部分进行排序,从而能够快速对待排序数组中的元素进行排序。
附图说明
图1是本发明的一种数据处理方法实施例的步骤流程图;
图2a是本发明的一种密文比较方法实施例的步骤流程图;
图2b是本发明的一种密文比较方法可选实施例的步骤流程图;
图3是本发明的一种数据处理方法可选实施例的步骤流程图;
图4是本发明的又一种数据处理方法可选实施例的步骤流程图;
图5是本发明的一种数据处理装置实施例的结构框图;
图6是本发明的一种数据处理装置可选实施例的结构框图;
图7示意性地示出了用于执行根据本发明的方法的电子设备的框图。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明实施例中,用于执行所述数据处理方法的设备可以提供多方安全计算服务,多方安全计算可以抽象的理解为:两方分别有各自的私有数据,在不泄漏各自私有数据的情况下,能够计算出关于公共函数的结果;整个计算完成时,只有计算结果对双方可知,且双方均不知对应的数据以及计算过程的中间数据。其中,所述公共函数可以实现多种计算功能如加、减、乘和除等等;且两方的私有数据中至少有一个是密文,即可以进行密文与密文之间的计算,也可以进行密文与明文之间的计算。
参照图1,示出了本发明的一种数据处理方法实施例的步骤流程图,具体可以包括如下步骤:
步骤102、获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文。
本发明实施例中,当需要对元素是密文的数组进行排序时,可以获取该数组并将该数组称为待排序数组A;然后从待排序数组A中获取需要排序的待排序元素,针对待排序元素执行如下步骤104-108的排序操作。
其中,从待排序数组A中获取的待排序元素,可以是所述待排序数组包含的所有元素。
步骤104、从所述待排序元素中选定基准元素。
步骤106、依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
步骤108、依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧。
本发明实施例中,可以从所述待排序元素中选定一个元素作为基准元素,然后可以通过将待排序元素中其他元素与基准元素进行比对,将待排序元素中其他元素分别放置在基准元素两侧。其中,从待排序元素中选定基准元素的方式包括多种,例如,可以选择待排序元素中第一个元素作为基准元素,也可以选择待排序元素中最后一个元素作为基准元素;当然还可以选择待排序元素中其他位置的元素作为基准元素,本发明实施例对此不作限制。
本发明实施例中,可以依次将所述待排序元素中各其他元素,分别与基准元素进行密文比较,得到对应的密文比较结果;每次将一个其他元素与基准元素进行比较后,可以依据对应的密文比较结果对该其他元素进行排序。所述密文比较结果可以是0或1的密文。
其中,每次将一个其他元素与基准元素进行比较后,可以将对应的密文比较结果恢复成明文;然后根据对应密文比较结果的明文,确定是否需要变换该其他元素的位置。当确定需要变换该对该其他元素的位置时,则可以对该其他元素的位置进行变换;进而将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧。
本发明实施例中,若需要对所述待排序数组A进行从小到大排序,则可以将待排序元素中小于基准元素的其他元素放置在基准元素的左侧,以及将大于基准元素的其他元素放置在基准元素的右侧。若需要对所述待排序数组 A进行从大到小排序,则可以将待排序元素中小于基准元素的其他元素放置在基准元素的右侧,以及将大于基准元素的其他元素放置在基准元素的左侧;具体可以按照需求设置,本发明实施例对此不作限制。
步骤110、将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。
本发明实施例中,可以将放置于所述基准元素其中一侧的元素确定为待排序元素,然后执行步骤104;以及可以将放置与所述基站元素另一侧的元素确定为待排序元素,然后执行步骤104。其中,基准元素两侧元素的排序操作是相互独立、互不干扰的,针对基准元素不同侧元素确定的待排序元素,可以同时执行步骤104,也可以先后执行步骤104,本发明实施例对此不作限制。
本发明实施例中,每一次从步骤104执行到步骤108后,可以分别判断基准元素两侧元素的数量;当基准元素某一侧对应元素的数量大于1时,可以将放置于所述基准元素该侧的元素确定为待排序元素,然后执行步骤104。当基准元素某一侧对应元素的数量为1时,可以停止对该侧的下一轮排序。
综上,本发明实施例中,获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素;依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。进而每次能够将待排序元素划分为两个部分,在分别对这两个部分进行排序,从而能够快速对待排序数组中的元素进行排序。
以下对上述步骤106中,所述依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果进行说明。
其中,为了便于后续说明,可以用字符表示待排序数组A中待排序元素、待排序元素中的基准元素和其他元素。本发明的一个示例中,所述待排序元素为A[k1]~A[k2],其中,A[s]为基准元素,A[i]为其他元素,k2和k1的差值为n,s、i、k1、k2和n均为整数,i、s的取值范围为k1~k2,s不等于i。
其中,基于其他元素A[i]与基准元素A[s]进行的密文比较,可以包括:进行A[i]≥A[s]的密文比较,和,进行A[i]<A[s]的密文比较;当然也可以是进行A[i]≥A[s]的密文比较,和,进行A[i]≤A[s]的密文比较;本发明实施例对此不作限制。
以下以进行A[i]≥A[s]的密文比较为例进行说明。
参照图2a,示出了本发明的一种密文比较方法实施例的步骤流程图,具体可以包括如下步骤:
步骤202a、依次基于其他元素A[i]与基准元素A[s]执行(A[i]-A[s])减法计算任务,得到对应的差值。
步骤204a、基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位。
步骤206a、将所述差值对应二进制的首位的密文确定为所述A[i]≥A[s] 的密文比较结果。
以下以将所述待排序元素中一个其他元素A[i]与基准元素A[s]进行密文比较,得到对应的密文比较结果为例进行说明。
本发明实施例中,可以由上述设备所提供的计算引擎进行所述多方安全计算,所述计算引擎中包括多个计算节点,具体可以由计算引擎中各计算节点协同进行多方安全计算。其中,所述计算引擎中计算节点的数量可以按照需求设置,本发明实施例对此不作限制。
本发明的一种示例中,计算引擎可以将对A[i]与A[s]进行密文比较的任务,先转换成计算(A[i]-A[s])的计算任务以及提取二进制表示(A[i]-A[s]) 的计算结果中最高位值的计算任务;然后依据最高位值,确定对应的密文比较结果H。其中,计算引擎可以先基于两个输入数据(A[i]和A[s])执行 (A[i]-A[s])减法计算任务和(A[i]-A[s])对应计算结果的位提取计算任务。例如,计算引擎可以利用部分计算节点执行减法计算任务,并得到各自持有的减法计算结果,再以各自持有的减法计算结果作为位提取计算任务的私密数据,利用一次比特位置换的数据交互执行最高位提取,得到位提取的计算结果。
其中,在计算过程中,可以将输入数据按照分散规则分散为多个数值,然后将每个数值分散存储到各个计算节点中,各计算节点根据分散存储的数值进行协同计算;其中,所述分散规则可以按照需求设置如加法规则等,本发明实施例对此不作限制。其中,所述所有的数值组成所述输入数据的密文,每个数值可以称为输入数据的密文分片,即所有的密文分片组成所述输入数据的密文,每个密文分片可以被分散存储到一个计算节点。对应的,待排序数组中每个元素对应密文分片可以被分散到各计算节点。
本发明的一个示例中,A[i]包括密文分片a11、a12、a13和a14,A[s]包括密文分片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[s])差值的二进制位。其中,k为(A[i]-A[s])差值的待提取的二进制位数。在此,四个计算节点通过本地进行位计算生成包含有可抵消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进行基于公式u1=x1[1:k]⊕r12的本地计算得到中间数据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 GDA0003462105840000091
并将t′1发送至S3.
S2计算
Figure GDA0003462105840000092
并将t′2发送至S4.
S3计算
Figure GDA0003462105840000093
并将t′a发送至S1
S4计算
Figure GDA0003462105840000094
并将t′b发送至S2
S1赋值
Figure GDA0003462105840000095
S2赋值
Figure GDA0003462105840000096
S3赋值
Figure GDA0003462105840000097
S4 赋值
Figure GDA0003462105840000098
然后各计算节点利用被赋值的输出比特位、随机数对各自持有的私密数据的第k位比特值进行逻辑计算得到计算结果。
例如,计算节点S1基于公式
Figure GDA0003462105840000099
的本地计算得到计算结果 c′1;计算节点S2进行基于公式
Figure GDA00034621058400000910
本地计算得到计算结果c′2;计算节点S3进行基于公式
Figure GDA00034621058400000911
本地计算得到计算结果ca;计算节点S4进行基于公式
Figure GDA00034621058400000912
本地计算得到计算结果cb
其中,由于二进制的首位可以表示该二进制对应十进制数值的正负,因此可以提取(A[i]-A[s])的差值对应二进制的首位,来判断A[i]是否大于或等于A[s]。因此可以令k=1,进而利用一次比特位置换的数据交互执行最高位提取,得到(A[i]-A[s])的差值对应二进制的首位。
其中,当(A[i]-A[s])差值对应二进制的首位为0时,说明A[i]-A[s]的差值为正数,可以确定A[i]大于或等于A[s];当(A[i]-A[s])差值对应二进制的首位为1时,说明A[i]-A[s]的差值为负数,可以确定A[i]小于A[s]。因此可以将1与所述差值对应二进制的首位的差值,确定为所述A[i]≥A[s]的密文比较结果H;进而当A[i]-A[s]的差值对应二进制首位的密文为0的密文时,所述A[i]≥A[s]的密文比较结果H为1的密文,当A[i]-A[s]的差值对应二进制首位的密文为1的密文时,所述A[i]≥A[s]的密文比较结果H为0的密文。
以下以进行A[i]<A[s]的密文比较为例进行说明。
参照图2b,示出了本发明的一种密文比较方法可选实施例的步骤流程图,具体可以包括如下步骤:
步骤202b、依次基于其他元素A[i]与基准元素A[s]执行(A[s]-A[i])减法计算任务,得到对应的差值。
步骤204b、基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位。
步骤202b-步骤204b,与上述步骤202a-步骤204a类似,在此不再赘述。
步骤206b、将所述差值对应二进制的首位的密文确定为所述A[i]<A[s] 的密文比较结果。
其中,当(A[s]-A[i])差值对应二进制的首位为0时,说明A[s]-A[i]的差值为正数,可以确定A[s]大于或等于A[i];当(A[s]-A[i])差值对应二进制的首位为1时,说明A[s]-A[i]的差值为负数,可以确定A[s]小于A[i];因此可以将所述差值对应二进制的首位,确定为所述A[i]<A[s]的密文比较结果;进而当A[s]-A[i]的差值对应二进制首位的密文为0的密文时,所述A[i] <A[s]的密文比较结果H为0的密文,当A[s]-A[i]的差值对应二进制首位的密文为1的密文时,所述A[i]<A[s]的密文比较结果H为1的密文。
本发明的另一个实施例中,在对待排序数组A进行排序时,也可以对待排序数组A中元素对应的下标进行排序;进而可以得到待排序数组A中元素排序后的下标。
因此本发明实施例可以构造辅助数组B;将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的初始下标。其中,所述待排序数组A 中初始各元素的初始下标,可以是指待排序数组A未排序之前的各元素对应的下标。例如,待排序数组A=[0,4,1],在对A排序之前将A中各元素对应的下标,添加到B中对应位置,得到B=[0,1,2]。
然后在所述将所述密文比较结果恢复为明文之后,可以依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置。其中,一种调整所述辅助数组B中元素的位置的方式可以是:确定所述辅助数组B中与所述待排序元素中其他元素对应的其他初始下标,和所述基准元素对应的基准初始下标;依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧。其中,可以根据小于(或大于)基准元素的其他元素在待排序数组A中的位置,将辅助数组B中该位置上的元素确定为小于(或大于)基准元素的其他元素对应的其他初始下标,和基准元素对应的基准元素下标。
本发明实施例中,将小于基准元素的其他元素放置在基准元素的哪一侧,可以对应将与小于基准元素的其他元素的其他初始下标放置在基准初始下标的哪一侧。同理,将大于基准元素的其他元素放置在基准元素的哪一侧,可以对应将与大于基准元素的其他元素的其他初始下标放置在基准初始下标的哪一侧。
以下便于说明,对应的,可以采用字符表示辅助数组B中的元素。辅助数组B中与待排序元素A[k1]~A[k2]对应的初始下标可以表示为 B[k1]~B[k2],基准元素A[s]对应的基准初始下标可以表示为B[s],其他元素 A[i]对应的其他初始下标可以表示为B[i]。
本发明的一个实施例中,若是需要对所述待排序数组A中的元素进行从小到大的排序,则可以将待排序元素中小于基准元素的其他元素放置在基准元素的左侧,以及将大于基准元素的其他元素放置在基准元素的右侧。
以下以将待排序元素中最后一个元素作为基准元素(即s=k2)为例,针对待排序元素执行如下排序操作进行说明。
参照图3,示出了本发明的一种数据处理方法可选实施例的步骤流程图。
步骤302、从所述待排序元素中选定基准元素。
本发明实施例中,可以将待排序元素中的最后一个元素作为基准元素 A[s],其中s=k2。
步骤304、依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
本发明实施例中,待排序元素中包括n+1个元素,因此可以将其中n个其他元素分别与基准元素进行密文比较,得到各其他元素与基准元素的密文比较结果。并将各密文比较结果恢复为明文,进而得到n个密文比较结果的明文;然后依据每个密文比较结果的明文,对对应的其他元素的位置进行变换,可以执行步骤306-步骤308。
步骤306、设置变量j,并令j=k1-1,i=k1。
其中,为了便于说明在确定需要对其他元素的位置进行变换时,如何变换待排序数组中各其他元素的位置,可以设置变量j;然后将j赋值为k1-1 以及将i赋值为k1,所述j为整数。
步骤308、执行循环次数为n的循环计算:
本发明实施例中,可以执行循环次数n的循环计算,每执行一次循环计算,根据计算结果可以对其中一个其他元素的位置进行变换;具体可以参照步骤3082或步骤3084。
步骤3082、若是进行A[i]≥A[s]的密文比较,则判断A[i]≥A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,交换B[i]与B[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算。
步骤3084、若是进行A[i]<A[s]的密文比较,则判断A[i]<A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置,交换B[i]与B[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算。
步骤310、待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
其中,若是进行A[i]≥A[s]的密文比较,则判断A[i]≥A[s]的密文比较结果的明文是否为1,即判断A[i]是否小于A[s]。当确定A[i]≥A[s]的密文比较结果的明文为1时,说明A[i]小于A[s];此时可以将所述j加1,交换 A[i]与A[j]的位置,交换B[i]与B[j]的位置,以实现将小于基准元素的其他元素向待排序数组A的头部移动。然后可以将i加1,并执行下一次循环计算。当确定A[i]≥A[s]的密文比较结果的明文为0时,说明A[i]大于或等于 A[s],此时无需交换A[i]的位置,直接执行下一次循环计算。
待执行n次循环计算后,可以执行步骤310,交换所述A[s]与A[j+1]的位置,以保证小于基准元素的其他元素均在基准元素的左侧,大于基准元素的其他元素均在基准元素右侧。
本发明的一个示例中,上述步骤3082和步骤310可以参照如下代码实现:
Figure GDA0003462105840000121
其中,所述plain_flag为(A[i]≥A[k2])对应密文比较结果的明文。
当然,也可以先执行步骤306,然后在执行每次循环计算时,设置变量 flag和plain_flag,并将flag赋值为(A[i]≥A[k2])的密文比较结果,以及将 plain_flag赋值为(A[i]≥A[k2])的密文比较结果的明文;进而通过执行n 次循环计算,实现依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
本发明一个示例中,先执行步骤306后,步骤304、步骤3082和步骤310:可以参照如下代码实现:
Figure GDA0003462105840000131
其中,back2plain用于将密文比较结果flag恢复为明文。
例如:待排序数组A=[2,5,3,1,4],辅助数组B=[0,1,2,3,4]。
从待排序数组A获取待排序元素为A中所有的元素:A[0]~A[4],针对待排序元素执行如下排序操作:
从所述待排序元素中选定基准元素:A[4];
设置变量j,并令j=-1,i=0;
第一次循环计算:A[0]≥A[4]密文比较结果的明文plain_flag=1,可以将j+1,得到j=0;由于i=1,因此可以保持位置A[0]位置不变,然后i+1,执行第二次循环计算。其中,第一次循环计算后,得到A=[2,5,3,1,4], B=[0,1,2,3,4]。
第二次循环计算:A[1]≥A[4]密文比较结果的明文plain_flag=0;因此可以直接执行第三次循环计算。其中,第二次循环计算后,得到A=[2,5,3,1,4], B=[0,1,2,3,4]。
第三次循环计算:A[2]≥A[4]密文比较结果的明文plain_flag=1;因此可以将j+1,得到j=1。然后执行A[1],A[2]=A[2],A[1],B[1],B[2]=B[2], B[1]。即将A[1]的5和A[2]的3进行交换,以及将B[1]的1和B[2]的2交换,然后i+1,执行第四次循环计算。其中,第三次循环计算后,得到A=[2,3,5,1,4], B=[0,2,1,3,4]。
第四次循环计算:A[3]≥A[4]密文比较结果的明文plain_flag=1;因此将j+1,得到j=2。然后执行A[2],A[3]=A[3],A[2],B[2],B[3]=B[3],B[2]。即将A[2]的5和A[3]的1进行交换,以及将B[2]的1和B[3]的3交换。其中,第四次循环后,得到A=[2,3,1,5,4],B=[0,2,3,1,4]。
四次循环计算结束后,可以将A[3],A[4]=A[4],A[3];B[3],B[4]=B[4], B[3]。即将A[3]的5和A[4]的4进行交换,以及将B[3]的1和B[4]的4交换。其中,第四次循环后,得到A=[2,3,1,4,5],B=[0,2,3,4,1]。
其中,基准元素左侧包括三个元素:A[0]、A[1]和A[2],因此可以将 A[0]~A[2]作为待排序元素,将B[0]~B[2]作为待排序元素对应的初始下标,重复执行上述步骤。基准元素右侧包括一个元素,可以停止对该侧元素进行排序。
其中,若是进行A[i]<A[s]的密文比较,则判断A[i]<A[s]的密文比较结果的明文是否为0,即判断A[i]是否小于A[s]。当确定A[i]<A[s]的密文比较结果的明文为0时,说明A[i]小于A[s];此时可以将所述j加1,交换A[i] 与A[j]的位置,交换B[i]与B[j]的位置,以实现将小于基准元素的其他元素向待排序数组A的头部移动。然后可以将i加1,并执行下一次循环计算。当确定A[i]<A[s]的密文比较结果的明文为1时,说明A[i]大于A[s],此时无需交换A[i]的位置,直接执行下一次循环计算。
待执行n次循环计算后,可以执行步骤310,交换所述A[s]与A[j+1]的位置,以保证小于基准元素的其他元素均在基准元素的左侧,大于基准元素的其他元素均在基准元素右侧。
本发明的一个示例中,上述步骤3084和步骤310可以参照如下代码实现:
Figure GDA0003462105840000141
其中,所述plain_flag为(A[i]<A[k2])对应密文比较结果的明文。
当然,也可以先执行步骤306,然后在执行每次循环计算时,设置变量 flag和plain_flag,并将flag赋值为(A[i]<A[k2])的密文比较结果,以及将plain_flag赋值为(A[i]<A[k2])的密文比较结果;进而通过执行n次循环计算,实现依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
本发明一个示例中,先执行步骤306,再执行步骤304、步骤3084和步骤310:可以参照如下代码实现:
Figure GDA0003462105840000142
其中,back2plain用于将密文比较结果flag恢复为明文。
综上,本发明实施例中,获取待排序数组A中的待排序元素,然后针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素A[s];依次将所述待排序元素中其他元素A[i]与基准元素A[s]进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。若需要对所述待排序数组A进行从小到大的排序且s为k2,则设置变量j,并令j=k1-1,i=k1;执行循环次数为n的循环计算:若是进行A[i]≥A[s]的密文比较,则判断A[i] ≥A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i] 与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;若是进行A[i]<A[s]的密文比较,则判断A[i]<A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;待执行n次循环计算后,交换所述A[s]与A[j+1]的位置;进而实现对密文数组进行从小到大的排序。
本发明的另一个实施例中,若是需要对所述待排序数组A中的元素进行从大到小的排序,则可以将待排序元素中大于基准元素的其他元素放置在基准元素的左侧,以及将小于基准元素的其他元素放置在基准元素的右侧。
以下以将待排序元素中最后一个元素作为基准元素(即s=k2)为例,针对待排序元素执行如下排序操作进行说明。
参照图4,示出了本发明的又一种数据处理方法可选实施例的步骤流程图。
步骤402、从所述待排序元素中选定基准元素。
本发明实施例中,可以将待排序元素中的最后一个元素作为基准元素 A[s],其中s=k2。
步骤404、依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
本发明实施例中,待排序元素中包括n+1个元素,因此可以将其中n个其他元素分别与基准元素进行密文比较,得到各其他元素与基准元素的密文比较结果。并将各密文比较结果恢复为明文,进而得到n个密文比较结果的明文;然后依据每个密文比较结果的明文,对对应的其他元素的位置进行变换,可以执行步骤406-步骤41。
步骤406、设置变量j,并令j=k1-1,i=k1。
其中,为了便于说明在确定需要对其他元素的位置进行变换时,如何变换待排序数组中各其他元素的位置,可以设置变量j;然后将j赋值为k1-1,以及将i赋值为k1,所述j为整数。
步骤408、执行循环次数为n的循环计算:
本发明实施例中,可以执行循环次数n的循环计算,每执行一次循环计算,可以对其中一个其他元素的位置进行变换;具体可以参照步骤4082或步骤4084。
步骤4082、若是进行A[i]≥A[s]的密文比较,则判断A[i]≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置,交换B[i]与B[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算。
步骤4084、若是进行A[i]<A[s]的密文比较,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,交换B[i]与B[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算。
步骤410、待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
其中,若是进行A[i]≥A[s]的密文比较,则判断A[i]≥A[s]的密文比较结果的明文是否为0,即判断A[i]是否大于或等于A[s]。当确定A[i]≥A[s] 的密文比较结果的明文为0时,说明A[i]大于或等于A[s];此时可以将所述 j加1,交换A[i]与A[j]的位置,交换B[i]与B[j]的位置,以实现将大于基准元素的其他元素向待排序数组A的头部移动。然后可以将i加1,并执行下一次循环计算。当确定A[i]≥A[s]的密文比较结果的明文为1时,说明A[i] 小于A[s],此时无需交换A[i]的位置,直接执行下一次循环计算。
待执行n次循环计算后,可以执行步骤410,交换所述A[s]与A[j+1]的位置,以保证大于基准元素的其他元素均在基准元素的左侧,小于基准元素的其他元素均在基准元素右侧。
本发明的一个示例中,上述步骤4082和步骤410可以参照如下代码实现:
Figure GDA0003462105840000161
其中,所述plain_flag为(A[i]≥A[k2])对应密文比较结果的明文。
当然,也可以先执行步骤406,然后在执行每次循环计算时,设置变量flag和plain_flag,并将flag赋值为(A[i]≥A[k2])的密文比较结果,以及将 plain_flag赋值为(A[i]≥A[k2])的密文比较结果的明文;进而通过执行n 次循环计算,实现依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
本发明一个示例中,先执行步骤406,再执行步骤404、步骤4082和步骤410:可以参照如下代码实现:
Figure GDA0003462105840000162
Figure GDA0003462105840000171
其中,back2plain用于将密文比较结果flag恢复为明文。
例如:待排序数组A=[2,5,3,1,4],辅助数组B=[0,1,2,3,4]。
从待排序数组A获取待排序元素为A中所有的元素:A[0]~A[4],针对待排序元素执行如下排序操作:
从所述待排序元素中选定基准元素:A[4];
设置变量j,并令j=-1,i=0;
第一次循环计算:A[0]≥A[4]密文比较结果的明文plain_flag=1,因此可以直接执行第二次循环计算。其中,第一次循环计算后,得到A=[2,5,3,1,4], B=[0,1,2,3,4]。
第二次循环计算:A[1]≥A[4]密文比较结果的明文plain_flag=0;因此可以将j+1,得到j=0;然后执行A[0],A[2]=A[2],A[0],B[0],B[2]=B[2], B[0]。即将A[0]的2和A[1]的5进行交换,以及将B[0]的0和B[1]的1交换,然后i+1,执行第三次循环计算。其中,第二次循环后,得到A=[5,2,3,1,4], B=[1,0,2,3,4]。
第三次循环计算:A[2]≥A[4]密文比较结果的明文plain_flag=1;因此可以直接执行第四次循环计算。其中,第三次循环计算后,得到A=[5,2,3,1,4], B=[1,0,2,3,4]。
第四次循环计算:A[3]≥A[4]密文比较结果的明文plain_flag=1;可以结束循环。其中,第四次循环计算后,得到A=[5,2,3,1,4],B=[1,0,2,3,4]。
四次循环计算结束后,可以将A[1],A[4]=A[4],A[1];B[1],B[4]=B[4], B[1]。即将A[1]的2和A[4]的4进行交换,以及将B[1]的0和B[4]的4交换。其中,第四次循环后,得到A=[5,4,3,1,2],B=[1,4,2,3,0]。
其中,基准元素左侧包括一个元素,可以停止对该侧元素进行排序。基准元素右侧包括三个元素:A[2]、A[3]和A[4],因此可以将A[2]~A[4]作为待排序元素,将B[2]~B[4]作为待排序元素对应的初始下标,重复执行上述步骤。
其中,若是进行A[i]<A[s]的密文比较,则判断A[i]<A[s]的密文比较结果的明文是否为1,即判断A[i]是否大于或等于A[s]。当确定A[i]<A[s]的密文比较结果的明文为1时,说明A[i]大于或等于A[s];此时可以将所述j加 1,交换A[i]与A[j]的位置,交换B[i]与B[j]的位置,以实现将大于基准元素的其他元素向待排序数组A的头部移动。然后可以将i加1,并执行下一次循环计算。当确定A[i]<A[s]的密文比较结果的明文为0时,说明A[i]小于A[s],此时无需交换A[i]的位置,直接执行下一次循环计算。
待执行n次循环计算后,可以执行步骤410,交换所述A[s]与A[j+1]的位置,以保证小于基准元素的其他元素均在基准元素的左侧,大于基准元素的其他元素均在基准元素右侧。
本发明的一个示例中,上述步骤4084和步骤410可以参照如下代码实现:
Figure GDA0003462105840000181
其中,所述plain_flag为(A[i]<A[k2])对应密文比较结果的明文。
当然,也可以先执行步骤306,然后在执行每次循环计算时,设置变量 flag和plain_flag,并将flag赋值为(A[i]<A[k2])的密文比较结果,以及将 plain_flag赋值为(A[i]<A[k2])的密文比较结果;进而通过执行n次循环计算,实现依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。
本发明一个示例中,先执行步骤406,再执行步骤404、步骤4084和步骤410:可以参照如下代码实现:
Figure GDA0003462105840000182
其中,back2plain用于将密文比较结果flag恢复为明文。
当然,无论是对待排序数组A进行从小到大的排序,还是对待排序数组 A进行从大到小的排序;所述基准元素A[s]中的s也可以等于s1,则可以令 j=k1,i=k1+1;然后可以对应的执行循环次数为n的循环计算,其中i属于 (k1+1)~k2。
综上,本发明实施例中,获取待排序数组A中的待排序元素,然后针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素A[s];依次将所述待排序元素中其他元素A[i]与基准元素A[s]进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文。若需要对所述待排序数组A进行从小到大的排序且s为k2,则设置变量j,并令j=k1-1,i=k1;执行循环次数为n的循环计算:若是进行A[i]≥A[s]的密文比较,则判断A[i] ≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i] 与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;若是进行A[i]<A[s]的密文比较,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;待执行n次循环计算后,交换所述A[s]与A[j+1]的位置;进而实现对密文数组进行从小到大的排序;进而实现对密文数组进行从大到小的排序。
需要说明的是,以上示例中,待排序数组A中的数值均是指该数值对应的密文。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
参照图5,示出了本发明一种数据处理装置实施例的结构框图,具体可以包括如下模块:
待排序数组获取模块502,用于获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;
排序模块504,用于针对待排序元素执行排序操作;
所述排序模块504可以包括:
基准元素选定子模块5042,用于从所述待排序元素中选定基准元素;
比较结果恢复子模块5044,用于依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;
元素位置放置子模块5046,用于依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;
循环子模块5048,用于将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。
参照图6,示出了本发明一种数据处理装置可选实施例的结构框图。
本发明一个可选实施例中,所述待排序元素为A[k1]~A[k2],其中,A[s] 为基准元素,A[i]为其他元素,k2和k1的差值为n,s、i、k1、k2和n均为整数,i、s的取值范围为k1~k2,s不等于i。
本发明一个可选实施例中,所述比较结果恢复子模块5044可以包括:
第一元素差值计算单元50442,用于若是进行A[i]≥A[s]的密文比较,则依次基于其他元素A[i]与基准元素A[s]执行(A[i]-A[s])减法计算任务,得到对应的差值;
第一差值首位提取单元50444,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
第一比较结果确定单元50446,用于将所述差值对应二进制的首位的密文确定为所述A[i]≥A[s]的密文比较结果。
本发明一个可选实施例中,所述比较结果恢复子模块5044可以包括:
第二元素差值计算单元50448,用于若是进行A[i]<A[s]的密文比较,依次基于其他元素A[i]与基准元素A[s]执行(A[s]-A[i])减法计算任务,得到对应的差值;
第二差值首位提取单元504410,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
第二比较结果确定单元504412,用于将所述差值对应二进制的首位的密文确定为所述A[i]<A[s]的密文比较结果。
本发明一个可选实施例中,所述元素位置放置子模块5046可以包括:
第一变量设置单元50462,用于若s为k2,则设置变量j,并令j=k1-1, i=k1;
第一循环计算单元50464,用于执行循环次数为n的循环计算;
所述第一循环计算单元50464可以包括:
第一循环处理子单元504642,用于若需要对所述待排序数组A进行从小到大的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第二循环处理子单元504644,用于若需要对所述待排序数组A进行从大到小的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第一元素位置交换单元50466,用于待执行n次循环计算后,交换所述 A[s]与A[j+1]的位置。
本发明一个可选实施例中,所述元素位置放置子模块5046可以包括:
第二变量设置单元50468,用于若s为k2,则设置变量i和j,并令j=k1-1, i=k1;
第二循环计算单元504610,用于执行循环次数为n的循环计算;
所述第二循环计算单元504610可以包括:
第三循环处理子单元5046102,用于若需要对所述待排序数组A进行从小到大的排序,则判断A[i]<A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第四循环处理子单元5046104,用于若需要对所述待排序数组A进行从大到小的排序,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第二元素位置交换单元504612,用于待执行n次循环计算后,交换所述 A[s]与A[j+1]的位置。
本发明一个可选实施例中,所述的装置还可以包括:
辅助数组构造模块506,用于构造辅助数组B;
元素下标赋值模块508,用于将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的初始下标;
下标位置调整模块510,用于在比较结果恢复子模块在所述将所述密文比较结果恢复为明文之后,依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置。
本发明一个可选实施例中,所述下标位置调整模块510可以包括:
初始下标确定子模块5102,用于确定所述辅助数组B中与所述待排序元素中其他元素对应的其他初始下标,和所述基准元素对应的基准初始下标;
下标位置放置子模块5104,用于依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧。
本发明一个可选实施例中,所述下标位置放置子模块5104可以包括:
第一下标位置交换单元51042,用于在所述将所述j加1后,交换B[i] 与B[j]的位置;
第二下标位置交换单元51044,用于待执行n次循环计算后,交换所述 B[s]与B[j+1]的位置。
综上,本发明实施例中,获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;针对待排序元素执行如下排序操作:从所述待排序元素中选定基准元素;依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作。进而每次能够将待排序元素划分为两个部分,在分别对这两个部分进行排序,从而能够快速对待排序数组中的元素进行排序。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本发明实施例还提供了一种可读存储介质,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如本发明实施例中一个或多个所述的数据处理方法。
本发明实施例还提供了一种电子设备,包括:一个或多个处理器;和其上存储有指令的一个或多个可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如上述本发明实施例中一个或多个所述的数据处理方法。
本发明实施例一个示例中提供了一种电子设备,例如服务器,图7示出了可以实现根据本发明的服务器,例如管理服务器、存储服务器、应用服务器、云控服务、服务器集群等。该服务器传统上包括处理器710和以存储器 720形式的计算机程序产品或者计算机可读存储介质。存储器720可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM 之类的电子存储器。存储器720具有用于执行上述方法中的任何方法步骤的程序代码731的存储空间730。例如,用于程序代码的存储空间730可以包括分别用于实现上面的方法中的各种步骤的各个程序代码731。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。这些计算机程序产品包括诸如硬盘,紧致盘(CD)、存储卡或者软盘之类的程序代码载体。这样的计算机程序产品通常为便携式或者固定存储单元。该存储单元可以具有与图7的服务器中的存储器720类似布置的存储段、存储空间等。程序代码可以例如以适当形式进行压缩。通常,存储单元包括计算机可读代码,即可以由例如诸如710之类的处理器读取的代码,这些代码当由服务器运行时,导致该服务器执行上面所描述的方法中的各个步骤。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本发明实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本发明所提供的一种数据处理方法、一种数据处理装置和一种电子设备,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (18)

1.一种数据处理方法,其特征在于,包括:
获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;
针对待排序元素执行如下排序操作:
从所述待排序元素中选定基准元素;
依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;所述密文比较结果为0或1的密文;
依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;
将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作;
其中,所述的方法还包括:
构造辅助数组B;
将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的初始下标;
在所述将所述密文比较结果恢复为明文之后,所述的方法还包括:
依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置。
2.根据权利要求1所述的方法,其特征在于,所述待排序元素为A[k1]~A[k2],其中,A[s]为基准元素,A[i]为其他元素,k2和k1的差值为n,s、i、k1、k2和n均为整数,i、s的取值范围为k1~k2,s不等于i。
3.根据权利要求2所述的方法,其特征在于,若是进行A[i]≥A[s]的密文比较,所述依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,包括:
依次基于其他元素A[i]与基准元素A[s]执行(A[i]-A[s])减法计算任务,得到对应的差值;
基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
将所述差值对应二进制的首位的密文确定为所述A[i]≥A[s]的密文比较结果。
4.根据权利要求2所述的方法,其特征在于,若是进行A[i]<A[s]的密文比较,所述依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,包括:
依次基于其他元素A[i]与基准元素A[s]执行(A[s]-A[i])减法计算任务,得到对应的差值;
基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
将所述差值对应二进制的首位的密文确定为所述A[i]<A[s]的密文比较结果。
5.根据权利要求3所述的方法,其特征在于,若s为k2,则所述依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧,包括:
设置变量j,并令j=k1-1,i=k1;
执行循环次数为n的循环计算:
若需要对所述待排序数组A进行从小到大的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;
若需要对所述待排序数组A进行从大到小的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;
待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
6.根据权利要求4所述的方法,其特征在于,若s为k2,则所述依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧,包括:
设置变量i和j,并令j=k1-1,i=k1;
执行循环次数为n的循环计算:
若需要对所述待排序数组A进行从小到大的排序,则判断A[i]<A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;
若需要对所述待排序数组A进行从大到小的排序,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;
待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
7.根据权利要求 1所述的方法,其特征在于,所述依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置,包括:
确定所述辅助数组B中与所述待排序元素中其他元素对应的其他初始下标,和所述基准元素对应的基准初始下标;
依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧。
8.根据权利要求7所述的方法,其特征在于,所述依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧,包括:
在所述将所述j加1后,交换B[i]与B[j]的位置;
待执行n次循环计算后,交换所述B[s]与B[j+1]的位置。
9.一种数据处理装置,其特征在于,包括:
待排序数组获取模块,用于获取待排序数组A中的待排序元素,所述待排序数组A中的待排序元素为密文;
排序模块,用于针对待排序元素执行排序操作;
所述排序模块包括:
基准元素选定子模块,用于从所述待排序元素中选定基准元素;
比较结果恢复子模块,用于依次将所述待排序元素中其他元素与基准元素进行密文比较,得到对应的密文比较结果,并将所述密文比较结果恢复为明文;所述密文比较结果为0或1的密文;
元素位置放置子模块,用于依据所述密文比较结果的明文,将待排序元素中小于基准元素的其他元素放置在基准元素的一侧,以及将大于基准元素的其他元素放置在基准元素的另一侧;
循环子模块,用于将放置于所述基准元素任一侧的元素确定为待排序元素,针对任一侧待排序元素分别继续执行上述排序操作,直到一侧元素数量为1,则停止该侧的下一轮排序操作;
其中,所述的装置还包括:
辅助数组构造模块,用于构造辅助数组B;
元素下标赋值模块,用于将辅助数组B中各元素依次赋值为所述待排序数组A中初始各元素的初始下标;
下标位置调整模块,用于在比较结果恢复子模块在所述将所述密文比较结果恢复为明文之后,依据所述密文比较结果的明文,调整所述辅助数组B中元素的位置。
10.根据权利要求9所述的装置,其特征在于,所述待排序元素为A[k1]~A[k2],其中,A[s]为基准元素,A[i]为其他元素,k2和k1的差值为n,s、i、k1、k2和n均为整数,i、s的取值范围为k1~k2,s不等于i。
11.根据权利要求10所述的装置,其特征在于,所述比较结果恢复子模块包括:
第一元素差值计算单元,用于若是进行A[i]≥A[s]的密文比较,则依次基于其他元素A[i]与基准元素A[s]执行(A[i]-A[s])减法计算任务,得到对应的差值;
第一差值首位提取单元,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
第一比较结果确定单元,用于将所述差值对应二进制的首位的密文确定为所述A[i]≥A[s]的密文比较结果。
12.根据权利要求10所述的装置,其特征在于,所述比较结果恢复子模块包括:
第二元素差值计算单元,用于若是进行A[i]<A[s]的密文比较,依次基于其他元素A[i]与基准元素A[s]执行(A[s]-A[i])减法计算任务,得到对应的差值;
第二差值首位提取单元,用于基于所述差值执行位提取计算任务,提取所述差值对应二进制的首位,所述差值对应二进制首位为0或1的密文;
第二比较结果确定单元,用于将所述差值对应二进制的首位的密文确定为所述A[i]<A[s]的密文比较结果。
13.根据权利要求11所述的装置,其特征在于,所述元素位置放置子模块包括:
第一变量设置单元,用于若s为k2,则设置变量j,并令j=k1-1,i=k1;
第一循环计算单元,用于执行循环次数为n的循环计算;
所述第一循环计算单元包括:第一循环处理子单元,用于若需要对所述待排序数组A进行从小到大的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第二循环处理子单元,用于若需要对所述待排序数组A进行从大到小的排序,则判断A[i]≥A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置,i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第一元素位置交换单元,用于待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
14.根据权利要求12所述的装置,其特征在于,所述元素位置放置子模块包括:
第二变量设置单元,用于若s为k2,则设置变量i和j,并令j=k1-1,i=k1;
第二循环计算单元,用于执行循环次数为n的循环计算;
所述第二循环计算单元包括:
第三循环处理子单元,用于若需要对所述待排序数组A进行从小到大的排序,则判断A[i]<A[s]的密文比较结果的明文是否为0;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第四循环处理子单元,用于若需要对所述待排序数组A进行从大到小的排序,则判断A[i]<A[s]的密文比较结果的明文是否为1;若是,则将所述j加1,交换A[i]与A[j]的位置;i加1并执行下一次循环计算;若否,则执行下一次循环计算;
第二元素位置交换单元,用于待执行n次循环计算后,交换所述A[s]与A[j+1]的位置。
15.根据权利要求9所述的装置,其特征在于,所述下标位置调整模块包括:
初始下标确定子模块,用于确定所述辅助数组B中与所述待排序元素中其他元素对应的其他初始下标,和所述基准元素对应的基准初始下标;
下标位置放置子模块,用于依据所述密文比较结果的明文,将与所述小于基准元素的其他元素对应的其他初始下标放置在基准初始下标的一侧,以及将与所述大于基准元素的其他元素对应的其他初始下标放置在基准初始下标的另一侧。
16.根据权利要求15所述的装置,其特征在于,所述下标位置放置子模块包括:
第一下标位置交换单元,用于在所述将所述j加1后,交换B[i]与B[j]的位置;
第二下标位置交换单元,用于待执行n次循环计算后,交换所述B[s]与B[j+1]的位置。
17.一种可读存储介质,其特征在于,当所述存储介质中的指令由电子设备的处理器执行时,使得电子设备能够执行如方法权利要求1-8中一个或多个所述的数据处理方法。
18.一种电子设备,包括:
一个或多个处理器;和
其上存储有指令的一个或多个可读存储介质,当由所述一个或多个处理器执行时,使得所述电子设备执行如权利要求1-8中一个或多个所述的数据处理方法。
CN201910765881.9A 2019-08-19 2019-08-19 一种数据处理方法、装置和电子设备 Active CN112395624B (zh)

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (2)

Publication Number Publication Date
CN112395624A CN112395624A (zh) 2021-02-23
CN112395624B true CN112395624B (zh) 2022-02-25

Family

ID=74603532

Family Applications (1)

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

Country Status (1)

Country Link
CN (1) CN112395624B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004095796A1 (en) * 2003-04-17 2004-11-04 Visto Corporation A data access, replication or communication system comprising a message queuing communications platform
CN103401871A (zh) * 2013-08-05 2013-11-20 苏州大学 一种面向同态加密的密文定序方法及系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2004095796A1 (en) * 2003-04-17 2004-11-04 Visto Corporation A data access, replication or communication system comprising a message queuing communications platform
CN103401871A (zh) * 2013-08-05 2013-11-20 苏州大学 一种面向同态加密的密文定序方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
boom!!!.快速排序、单向链表的快速排序(C++).《CSDN》.2018, *
快速排序,单向排序;一装一鞋;《新浪博客》;20131105;参见正文第1页 *
快速排序、单向链表的快速排序(C++);boom!!!;《CSDN》;20181109;参见正文第1-2页 *

Also Published As

Publication number Publication date
CN112395624A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
JP5860556B1 (ja) 不整合検知方法、不整合検知システム、不整合検知装置、およびプログラム
EP2701337B1 (en) Secret sharing method and system
JP7328237B2 (ja) コンピュータにより実施される投票処理およびシステム
CN110262773B (zh) 一种计算机数据处理方法及装置
WO2016208437A1 (ja) 秘密計算装置、秘密計算方法、およびプログラム
JP2016173534A (ja) シェア復旧システム、シェア復旧方法、およびプログラム
CN112464155A (zh) 一种数据处理方法、多方安全计算系统和电子设备
CN116318660B (zh) 一种消息扩展与压缩方法及相关装置
CN111026359A (zh) 多方联合判定隐私数据的数值范围的方法和装置
Moon et al. An Efficient Encrypted Floating‐Point Representation Using HEAAN and TFHE
CN112668016B (zh) 一种模型训练方法、装置和电子设备
WO2022107323A1 (ja) 秘密計算システム、秘密計算サーバ装置、秘密計算方法および秘密計算プログラム
CN112395624B (zh) 一种数据处理方法、装置和电子设备
CN111159730B (zh) 数据处理方法、查询方法、装置、电子设备和系统
CN116260572B (zh) 数据杂凑处理方法、数据验证方法及电子设备
CN112395623B (zh) 一种数据处理方法、装置和电子设备
CN112668038A (zh) 一种模型训练方法、装置和电子设备
CN112182593A (zh) 一种数据处理方法、装置和电子设备
US20230085239A1 (en) Querying fully homomorphic encryption encrypted databases using client-side preprocessing or post-processing
US8364958B2 (en) Sharing a secret via linear interpolation
CN110100409B (zh) 产生安全散列值的方法和设备
Lochter Blockchain as cryptanalytic tool
CN116055049B (zh) 多方安全计算方法、装置、系统、电子设备和存储介质
US20240289493A1 (en) Secure computation system, secure computation server apparatus, secure computation method, and secure computation program
CN112115487B (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