一种数据处理方法和装置与流程

文档序号:30229402发布日期:2022-06-01 04:04阅读:98来源:国知局
一种数据处理方法和装置与流程

1.本说明书实施例属于计算机技术领域,尤其涉及一种数据处理方法和装置。


背景技术:

2.在安全多方计算领域中经常需要进行隐私保护集合交集计算。隐私保护集合交集计算(private set intersection,psi)允许进行隐私保护集合交集计算的两个(或多个)参与方在不泄露任何额外信息的情况下,得到各参与方持有数据的交集。在这里,额外信息可以是指除了参与方的数据交集以外的任何信息。隐私保护集合交集计算过程中,双方(或多方)的信息在保证隐私的前提下进行匹配,相匹配的信息就归属到交集中。这个过程中,所需要的计算量、通信量等会随着信息数量的增加而增大。在实际应用中,通常各方所持有的信息数量会比较大,这可能会导致计算资源被大量占用,造成隐私保护集合交集计算效率很低,大大增加实际应用中隐私保护集合交集计算的应用难度。


技术实现要素:

3.本说明书的实施例的目的在于提供一种数据处理方法和装置,本方法中的各集合所包含的多个加密数据根据对应的明文数据的大小进行排序,对于待匹配的第一数据,根据第一数据的大小在第一集合中确定匹配范围,然后对匹配范围内的第二加密数据进行解密,得到第二数据,根据第二数据确定第一集合中是否存在与第一数据匹配的元素,由此判断第一数据与第一集合是否存在交集。由于匹配过程中采用按需的方式对第一集合中的加密数据进行解密,不需要解密第一集合中的全部元素,因此,可以减少匹配过程中的计算资源消耗和时间消耗。
4.根据第一方面,提供了一种数据处理方法,包括:对于待匹配的第一数据,根据上述第一数据的大小在第一集合中确定匹配范围,其中,上述第一集合包括多个加密数据,上述多个加密数据根据对应的明文数据的大小进行排序;对上述匹配范围内的第二加密数据进行解密,得到第二数据,以用于确定上述第一集合中是否存在与上述第一数据匹配的元素。
5.在一个实施例中,上述根据上述第一数据的大小在第一集合中确定匹配范围,包括:根据上述第一集合对应的已解密元素表,确定上述第一数据在第一集合中对应的匹配范围,其中,上述已解密元素表用于存储已解密元素的明文数据。
6.在一个实施例中,上述方法还包括:响应于确定多个集合中不存在待匹配元素数量为零的集合,从多个集合中确定集合作为目标集合,其中,上述多个集合中的加密数据根据对应的明文数据的大小进行排序;基于从上述目标集合中确定的待匹配元素,确定第一数据。
7.在一个实施例中,上述方法还包括:根据上述多个集合中除上述目标集合之外的剩余集合的已解密元素表,确定上述第一数据在各剩余集合中对应的匹配范围;响应于确定得到的匹配范围中不存在为空的匹配范围,将剩余集合作为第一集合。
8.在一个实施例中,上述从多个集合中确定集合作为目标集合,包括:从上述多个集合中选取剩余待匹配元素最少的集合作为目标集合。
9.在一个实施例中,上述对上述匹配范围内的第二加密数据进行解密,得到第二数据,包括:采用二分法从上述匹配范围内确定第二加密数据进行解密,得到第二数据。
10.在一个实施例中,上述方法还包括:根据二分法的检索结果,确定多个集合中的各集合对应的下一个待匹配元素。
11.在一个实施例中,上述从多个集合中确定集合作为目标集合,包括:选取所对应的下一个待匹配元素已被解密的集合,作为目标集合。
12.根据第二方面,提供了一种数据处理装置,包括:确定单元,配置为对于待匹配的第一数据,根据上述第一数据的大小在第一集合中确定匹配范围,其中,上述第一集合包括多个加密数据,上述多个加密数据根据对应的明文数据的大小进行排序;匹配单元,配置为对上述匹配范围内的第二加密数据进行解密,得到第二数据,以用于确定上述第一集合中是否存在与上述第一数据匹配的元素。
13.根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当上述计算机程序在计算机中执行时,令计算机执行如第一方面中任一实现方式描述的方法。
14.根据第四方面,提供了一种计算设备,包括存储器和处理器,其特征在于,上述存储器中存储有可执行代码,上述处理器执行上述可执行代码时,实现如第一方面中任一实现方式描述的方法。
15.根据本说明书实施例提供的数据处理方法和装置,将各集合所包含的多个加密数据根据对应的明文数据的大小进行排序,对于待匹配的第一数据,根据第一数据的大小在第一集合中确定匹配范围;而后对匹配范围内的第二加密数据进行解密,得到第二数据,以用于确定第一集合中是否存在与第一数据匹配的元素。由于匹配过程中采用按需的方式对第一集合中的加密数据进行解密,不需要解密第一集合中的全部元素,因此,可以减少解密和匹配的次数,从而减少处理过程中的计算资源消耗和时间消耗。
附图说明
16.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
17.图1示出了本说明书实施例可以应用于其中的一个应用场景的示意图;
18.图2示出了根据一个实施例的数据处理方法的流程示意图;
19.图3示出了两个集合进行隐私求交的举例说明的示意图;
20.图4示出了根据一个实施例的数据处理装置的示意性框图。
具体实施方式
21.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,
本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
22.如前所述,隐私保护集合交集计算可以使参与方获得交集,同时不向其他参与方泄露非交集部分。传统的隐私保护集合交集计算算法中,首先将相关集合都解密,并将解密后数据存储到数据库中。然后通过数据表的查找功能逐个寻找在多个集合中都存在的数据项。这种方式需要将全部数据进行解密,当数据量较大时,解密耗时会很长。数据量较大时,还可能会造成无法使用内存数据库。此外,当多个集合的匹配项(或交集)很稀疏时,逐项匹配会浪费大量时间。
23.为此,本说明书的实施例提供了一种数据处理方法,从而可以提高隐私保护集合交集计算的效率。如图1所示,图1示出了本说明书实施例可以应用于其中的一个应用场景的示意图。在图1所示的应用场景中,包括3个集合,分别为集合1,集合2和集合3,每一个集合中包括多个加密数据,多个加密数据根据对应的明文数据的大小进行排序,本应用场景中,按由小到大的顺序进行排序。假设将集合2中的某一个待匹配元素对应的明文数据作为第一数据,将集合1作为第一集合,其中,集合1中包括[1,100],共100个元素,其中,[]中的数字表示元素的编号。对于第一数据,根据该第一数据的大小在集合1中确定匹配范围[50,100]。由于集合1中的100个元素是根据对应明文数据由小到大的训练进行排序的,因此,可以根据第一数据的大小在第一集合中确定匹配范围。举例来说,如果集合1中的部分元素已经被解密,可以根据已解密元素对应的明文数据的大小,以及第一数据的大小,确定匹配范围。如果集合1中的所有元素都未被解密,可以将集合1的整个范围确定为匹配范围。
[0024]
而后,对匹配范围[50,100]内的第二加密数据进行解密,得到第二数据,以用于确定第一集合中是否存在与第一数据匹配的元素。如果不存在,则可以确定第一数据不是3个集合的交集;如果存在,则还可以使用与上述相同的方式判断集合3中是否存在与第一数据匹配的元素,如果也存在,可以将第一数据确定为3个集合的交集。由此,得到多个集合的交集。
[0025]
继续参见图2,图2示出了根据一个实施例的数据处理方法的流程示意图。可以理解,该方法可以通过任何具有计算、处理能力的装置、设备、平台、设备集群来执行。其中,在对隐私保护集合交集计算的场景中,可以由可信设备执行该方法。该可信设备例如包括可信执行环境(trusted execution environment,tee),或者可以为第三方的计算设备,第三方可以是隐私保护集合交集计算的多个(至少两个)参与方预先确定的、可信任第三方。下文以隐私保护集合交集计算的场景为例进行描述。可以理解,虽然在本说明书实施例中以隐私保护集合交集计算的场景为例进行描述,但是本说明书实施例不限于该场景,而适用于任何需要对数据集合求交集的任意场景。
[0026]
如图2所示,该数据处理方法,可以包括以下步骤:
[0027]
步骤201,对于待匹配的第一数据,根据第一数据的大小在第一集合中确定匹配范围。
[0028]
隐私保护集合交集计算的各参与方可以按预先协商的排序方法,对各自持有的多个数据进行加密、排序等处理后发送给可信设备。举例来说,可以预先协商将多个加密数据根据对应的明文数据的大小进行排序。例如,将多个加密数据根据对应的明文数据由小到大的顺序进行排序,或者将多个加密数据根据对应的明文数据由大到小的顺序进行排序。
这样,可信设备就可以得到多个(至少两个)集合,各集合中包括多个加密数据,多个加密数据根据对应的明文数据的大小进行排序。
[0029]
对于得到的至少两个集合,可以从其中一个集合中确定一个加密数据,将该加密数据进行解密后得到第一数据。然后,将其它集合作为第一集合,根据第一数据的大小在各个第一集合中确定匹配范围。由于各个集合中的多个加密数据是根据对应的明文数据的大小进行排序的,因此,可以根据第一数据的大小和第一集合中已解密的数据,在第一集合中确定匹配范围。
[0030]
可信设备得到多个集合后,可以对多个集合进行匹配。作为示例,可信设备可以在可信执行环境(trusted execution environment,tee)中对多个集合进行数据匹配,举例来说,可以在enclave里进行匹配。tee是cpu(central processing unit,中央处理器)内的一个安全区域。它运行在一个独立的环境中且与操作系统并行运行。cpu确保tee中代码和数据的机密性和完整性都得到保护。通过同时使用硬件和软件来保护数据和代码,tee比操作系统更加安全。其中,intel软件防护拓展(software guard extensions,简称sgx)是目前商用cpu中较为先进的tee实现,它提供了一套新的指令集使得用户可以定义称为enclave的安全内存区域。由此,可以在tee中执行加密数据解密、数据匹配等操作,从而可以使集合中的数据更加安全。
[0031]
在一些可选的实现方式中,针对每一个集合可以对应设置一个已解密元素表,该已解密元素表可以用于存储已解密元素对应的明文数据。为了方便查找,已解密元素表还可以采用二叉树、平衡二叉树等方式表示。这样,上述步骤201中的,根据第一数据的大小在第一集合中确定匹配范围,可以具体如下进行:根据第一集合对应的已解密元素表,确定第一数据在第一集合中对应的匹配范围。
[0032]
本实现方式中,由于第一集合中的多个加密数据是根据对应的明文数据的大小进行排序的,因此,根据第一集合对应的已解密元素表中存储的明文数据,以及第一数据的大小,可以确定第一数据在第一集合中对应的匹配范围。
[0033]
举例来说,假设第一数据为105,第一集合中包括的6个加密数据按对应的明文数据由小到大的顺序进行排序,编号依次为1、2、3、4、5和6。其中,第一集合对应的已解密元素表中存储有编号为3的元素的解密数据为200。由于105《200,因此,第一集合中可能与第一数据匹配的元素存在于匹配范围[1,2]。所以可以将第一集合中的范围[1,2]确定为第一数据的匹配范围。
[0034]
步骤202,对匹配范围内的第二加密数据进行解密,得到第二数据,以用于确定第一集合中是否存在与第一数据匹配的元素。
[0035]
在本实施例中,可以对步骤201确定的匹配范围内的第二加密数据进行解密,从而得到第二数据,第二数据可以用于确定第一集合中是否存在与第一数据匹配的元素。举例来说,可以将匹配范围内的部分或者全部的加密数据进行解密,根据解密后的数据判断第一集合中是否存在与第一数据相匹配的元素。这里,相匹配可以是指解密后数据与第一数据大小相同。可以理解,当有两个以上的第一集合时,任意一个第一集合中不存在与第一数据匹配的元素,就可以确定第一数据不是多个集合的交集。为了提高隐私保护集合交集计算的效率,一旦确定第一数据不是多个集合的交集,即使还存在未与第一数据进行匹配的第一集合,也不再执行相应的数据匹配。
[0036]
在一些可选的实现方式中,步骤202中的,对匹配范围内的第二加密数据进行解密,得到第二数据,可以具体如下进行:采用二分法从匹配范围内确定第二加密数据进行解密,得到第二数据。
[0037]
在本实现方式中,可以采用二分法从步骤201所确定的匹配范围内确定第二加密数据进行解密。二分法(也称折半法)是一种在有序数组中查找特定元素的搜索算法。二分法应用于本实现方式,具体可以包括:(1)从匹配范围的中间元素开始对加密数据进行解密,如果该解密数据正好与第一数据匹配,则搜索结束。(2)如果第一数据大于/小于中间元素对应的解密数据,则在匹配范围大于/小于中间元素的那一半区域查找,然后,重复步骤(1)的操作。(3)如果某一步对应区域为空,则表示找不到与第一数据匹配的元素。通过本实现方式,可以采用二分法从匹配范围内确定至少一个加密数据进行解密,而不需要解密匹配范围内的全部元素,因此,可以进一步减少匹配过程中的计算资源消耗和时间消耗。尤其是当匹配范围内包括的元素较多时,更能体现优势。可以理解,在采用二分法进行检索的时候,可以将检索过程中解密的数据存储到对应的已解密元素表。
[0038]
在一些可选的实现方式中,上述数据处理方法还可以包括确定第一数据的步骤,具体包括:
[0039]
步骤一,响应于确定多个集合中不存在待匹配元素数量为零的集合,从多个集合中确定集合作为目标集合。
[0040]
在本实现方式中,多个集合中的加密数据根据对应的明文数据的大小进行排序。如果确定多个集合中存在一个集合,该集合中的待匹配元素的数量为0,则可以表示整个数据匹配过程结束。这里,集合中的待匹配元素可以是指集合中还需要进行数据匹配的元素。如果确定多个集合中不存在待匹配元素的数量为0的集合,从多个集合中确定一个集合作为目标集合。实践中,可以采用多种方式从多个集合中选取一个集合作为目标集合,例如,随机选取。
[0041]
在一种实现方式中,可以从多个集合中选取剩余待匹配元素最少的集合作为目标集合。
[0042]
实践中,在数据匹配过程中,如果某一个集合的待匹配元素的数量为零,则可以表示该集合中已经没有了用于进行数据匹配的待匹配元素。也就是说,该集合中存在的、多个集合的交集已经被全部找出了。此时,可以结束针对多个集合的数据匹配过程。基于此,可以从多个集合中选取剩余待匹配元素最少的集合作为目标集合,从而使针对多个集合的数据匹配过程加快,提高效率。
[0043]
在另一种实现方式中,上述数据处理方法还可以包括:根据二分法的检索结果,确定多个集合中的各集合对应的下一个待匹配元素。基于此,可以选取所对应的下一个待匹配元素已被解密的集合,作为目标集合。
[0044]
在本实现方式中,当采用二分法从匹配范围内确定第二加密数据进行解密,以确定第一集合中是否存在与第一数据匹配的元素时,还可以根据二分法的检索结果,确定各集合对应的下一个待匹配元素。这里,下一个待匹配元素可以用于下一次循环,即下一次数据匹配。也就是说,可以根据上一次数据匹配过程中确定的各集合对应的下一个待匹配元素,确定本次数据匹配的目标集合。实践中,还可以删除各集合对应的已解密元素表中的、下一个待匹配元素之前的已解密元素,由此,可以减少内存消耗和查找时间,提高数据匹配
的效率。
[0045]
作为示例,假设各集合中的多个加密数据根据对应的明文数据由小到大的顺序进行排序时,可以通过以下方式确定各集合的下一个待匹配元素:1)将第一数据对应的下一个元素作为第一数据所在集合所对应的下一个待匹配元素。举例来说,假设第一数据为某个集合的第50号元素的解密数据,则该集合对应的下一个待匹配元素为第51号元素,即第50号元素的下一个元素。2)如果确定采用二分法在匹配范围内检索到与第一数据匹配的元素,则可以将二分法检索结束时对应的元素的下一个元素作为该匹配范围对应的集合的下一个待匹配元素。举例来说,假设第一数据为集合s1的第50号元素的解密数据,采用二分法,如果在集合s2对应的匹配范围内检索到第100号元素的解密数据与第一数据匹配(例如,相同),则可以确定集合s2的第100号元素为二分法检索结束时对应的元素,并将第101号元素作为集合s2的下一个待匹配元素。3)如果确定采用二分法在匹配范围内检索结束时最后检索的元素对应的解密数据小于第一数据的值,可以将二分法检索结束时对应的元素的下一个元素作为该匹配范围对应的集合的下一个待匹配元素。举例来说,假设第一数据为集合s1的第50号元素的解密数据,采用二分法,在集合s2对应的匹配范围内检索,在集合s2的第100号元素检索结束,如果集合s2的第100号元素对应的解密数据小于第一数据的值,可以将第101号元素作为集合s2的下一个待匹配元素。4)如果确定采用二分法在匹配范围内检索结束时最后检索的元素对应的解密数据大于第一数据的值,可以将二分法检索结束时对应的元素作为该匹配范围对应的待匹配集合的下一个待匹配元素。举例来说,假设第一数据为集合s1的第50号元素的解密数据,采用二分法,在集合s2对应的匹配范围内检索,在集合s2的第100号元素检索结束,如果集合s2的第100号元素对应的解密数据大于第一数据的值,可以将第100号元素作为集合s2的下一个待匹配元素。可以理解,本示例仅仅以各集合中的多个加密数据按对应的明文数据由小到大的顺序进行排序为例,当集合中的多个加密数据按对应的明文数据由大到小的顺序排序时,基于相同的原理,本领域技术人员可以确定各集合对应的下一个待匹配集合,此处不再赘述。
[0046]
当确定了各个集合对应的下一个待匹配元素之后,可以根据各个集合的已解密元素表判断,各个集合对应的下一个待匹配元素是否已经被解密,如果已被解密,可以选取所对应的下一个待匹配元素已被解密的集合作为下一次数据匹配的目标集合。通过本实现方式,可能导致交替从不同集合中选取元素进行数据匹配,当至少两个集合中的数据交错分布时,本实现方式有助于快速减少每个集合中的剩余待匹配元素的数量,提高数据匹配的效率。
[0047]
步骤二,基于从目标集合中确定的待匹配元素,确定第一数据。
[0048]
在本实现方式中,可以从目标集合中确定一个待匹配元素,并基于该待匹配元素确定第一数据。例如,根据目标集合对应的已解密元素表,如果确定该待匹配元素已经解密的,可以将该待匹配元素对应的解密数据确定为第一数据;如果确定该待匹配元素未解密,则可以将该待匹配元素进行解密,得到第一数据。
[0049]
在一些可选的实现方式中,上述数据处理方法还可以包括确定第一集合的步骤,具体包括:
[0050]
1)根据多个集合中除目标集合之外的剩余集合的已解密元素表,确定第一数据在各剩余集合中对应的匹配范围。
[0051]
2)响应于确定得到的匹配范围中不存在为空的匹配范围,将剩余集合作为第一集合。
[0052]
在本实现方式中,除了目标集合之外,多个集合中还包括至少一个剩余集合,根据各个剩余集合的已解密元素表,可以确定第一数据在各个剩余集合中对应的匹配范围,从而得到至少一个匹配范围。然后,判断得到的至少一个匹配范围中是否存在为空的匹配范围,这里,匹配范围为空,可以是指匹配范围内不存在元素。如果判断某一个匹配范围为空,则可以表示该匹配范围内不存在与第一数据匹配的元素,即,剩余集合中存在集合与第一数据没有交集,由此可知,第一数据不是多个集合的交集,针对第一数据不需要进行后续的匹配。反之,如果判断得到的至少一个匹配范围中不存在为空的匹配范围,则可以将剩余集合作为第一集合,继续执行数据匹配。通过本实现方式,只有当第一数据在各剩余集合中对应的匹配范围不存在为空的匹配范围的情况下,才将剩余集合确定为第一集合。由此,提高数据匹配的效率。
[0053]
继续参见图3,图3示出了两个集合进行隐私求交的举例说明的示意图。在图3所示的例子中,假设期望对加密后的两个升序序列setx=《100,104,200,300,400,404》和sety=《105,400》进行隐私求交。
[0054]
初始时,setx和sety对应的已解密元素表均为空。第一次循环时,即第一次数据匹配时,将剩余待匹配元素较少的sety作为目标集合,sety的下一个待匹配元素的位置为1(假设序列从1开始编号)。将sety的第1个元素解密,获得第一数据,其值为105。由于此时setx对应的已解密元素表为空,因此,只能推断第一数据在第一集合setx中确定的匹配范围range为“setx中所有剩余的待匹配元素”,即,range=[1,6]。
[0055]
然后,按照二分法,从setx对应的匹配范围[1,6]查找105的匹配项。具体的,首先尝试将setx对应的匹配范围[1,6]中的第(1+6)/2=3(假设为下取整)号元素进行解密,解密第3号元素得到200,将这次解密称为解密

,105《200匹配失败。由于setx为升序排列,且105《200,因此推测与105匹配的潜在匹配项在[1,2]中。接下来尝试对setx中的第(1+2)/2=1号(下取整)元素进行解密,解密第1号元素得到100,将这次解密称为解密

,因100《105匹配失败,故推测潜在匹配项在[2,2]中,将第2号元素解密得到104,将这次解密称为解密

。因为104《105匹配失败,且此时已经没有了潜在匹配项,因此可以判断105在setx中不存在匹配项,也就是说,第一数据不是setx和sety的交集。
[0056]
为了方便循环执行,本次循环中还会更新setx和sety对应的下一待匹配元素的位置。具体的,sety的下一个待匹配元素就是本次循环获取的待匹配元素位置加1。setx对应的下一待匹配元素位置就是二分法查找结束时的位置或它的下一位置。具体位置取决于查找结果,例如:若二分法查找结束时找到了匹配项,则为二分法查找结束位置的下一位置;若二分法查找结束时最后尝试的位置值大于待匹配元素的值,且两个集合都是升序排列,则为二分法查找结束位置;其它情形可自行推导。本次循环更新setx的下一个待匹配元素为第3号元素。由于集合升序排列性质,可以仅将setx中解密得到的、值大于105的元素的解密数据存入setx对应的已解密元素表集合中,即:本次循环的二分法查找后,setx对应的已解密元素表中存储第3号元素的解密数据,其值为200。在第二次循环时,setx中的剩余待匹配元素有4个,分别为第3,4,5,6号元素。setx对应的下一个待匹配元素为第3号元素,且第3号元素已经被解密。sety的剩余待匹配元素有1个,为sety的第2号元素,sety对应的下一个
待匹配元素为第2号元素,且其尚未解密。此时,可以使用两种方式中的一种确定下一个循环的目标集合。方式一:选取剩余待匹配的元素数最少的集合作为目标集合;方式二,选取所对应的下一个待匹配元素已解密的集合作为目标集合。实践中,可以根据实际需要人工设置两种不同的确定目标集合的方式的优先级,以此当两种方式的条件都满足时,控制设备选取两种方式中的一种来确定目标集合。之后,执行的步骤和第一次循环时相同,故此处不做叙述。
[0057]
回顾以上过程,在本说明书的实施例中,各集合所包含的多个加密数据根据对应的明文数据的大小进行排序,对于待匹配的第一数据,首先根据第一数据的大小在第一集合中确定匹配范围;而后对匹配范围内的第二加密数据进行解密,得到第二数据,以用于确定第一集合中是否存在与第一数据匹配的元素。由于匹配过程中采用按需的方式对第一集合中的加密数据进行解密,不需要解密第一集合中的全部元素,因此,可以减少匹配过程中的计算资源消耗和时间消耗。
[0058]
根据另一方面的实施例,提供了一种数据处理装置。上述数据处理装置可以部署在任何具有计算、处理能力的设备、平台或设备集群中。
[0059]
图4示出了根据一个实施例的数据处理装置的示意性框图。如图4所示,该数据处理装置400包括:确定单元401,配置为对于待匹配的第一数据,根据上述第一数据的大小在第一集合中确定匹配范围,其中,上述第一集合包括多个加密数据,上述多个加密数据根据对应的明文数据的大小进行排序;匹配单元402,配置为对上述匹配范围内的第二加密数据进行解密,得到第二数据,以用于确定上述第一集合中是否存在与上述第一数据匹配的元素。
[0060]
在本实施例的一些可选的实现方式中,上述确定单元401进一步配置为:根据上述第一集合对应的已解密元素表,确定上述第一数据在第一集合中对应的匹配范围,其中,上述已解密元素表用于存储已解密元素的明文数据。
[0061]
在本实施例的一些可选的实现方式中,上述装置400还包括:目标集合确定单元(图中未示出),配置为响应于确定多个集合中不存在待匹配元素数量为零的集合,从多个集合中确定集合作为目标集合,其中,上述多个集合中的加密数据根据对应的明文数据的大小进行排序;第一数据确定单元(图中未示出),配置为基于从上述目标集合中确定的待匹配元素,确定第一数据。
[0062]
在本实施例的一些可选的实现方式中,上述装置400还包括:匹配范围确定单元(图中未示出),配置为根据上述多个集合中除上述目标集合之外的剩余集合的已解密元素表,确定上述第一数据在各剩余集合中对应的匹配范围;第一集合确定单元(图中未示出),配置为响应于确定得到的匹配范围中不存在为空的匹配范围,将剩余集合作为第一集合。
[0063]
在本实施例的一些可选的实现方式中,上述目标集合确定单元进一步配置为:从上述多个集合中选取剩余待匹配元素最少的集合作为目标集合。
[0064]
在本实施例的一些可选的实现方式中,上述匹配单元402进一步配置为:采用二分法从上述匹配范围内确定第二加密数据进行解密,得到第二数据。
[0065]
在本实施例的一些可选的实现方式中,上述装置400还包括:元素确定单元(图中未示出),配置为根据二分法的检索结果,确定多个集合中的各集合对应的下一个待匹配元素。
[0066]
在本实施例的一些可选的实现方式中,上述目标集合确定单元进一步配置为:选取所对应的下一个待匹配元素已被解密的集合,作为目标集合。
[0067]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当上述计算机程序在计算机中执行时,令计算机执行图2所描述的方法。
[0068]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,其特征在于,上述存储器中存储有可执行代码,上述处理器执行上述可执行代码时,实现图2所描述的方法。
[0069]
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmable logic device,pld)(例如现场可编程门阵列(field programmable gate array,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardware description language,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advanced boolean expression language)、ahdl(altera hardware description language)、confluence、cupl(cornell university programming language)、hdcal、jhdl(java hardware description language)、lava、lola、myhdl、palasm、rhdl(ruby hardware description language)等,目前最普遍使用的是vhdl(very-high-speed integrated circuit hardware description language)与verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
[0070]
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(application specific integrated circuit,asic)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:arc 625d、atmel at91sam、microchip pic18f26k20以及silicone labs c8051f320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0071]
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本技术不排
除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
[0072]
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
[0073]
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
[0074]
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0075]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0076]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0077]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0078]
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的
示例。
[0079]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0080]
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0081]
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0082]
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
[0083]
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1