字符串的匹配方法和装置、数据检测方法、服务器
技术领域
本说明书属于互联网技术领域,尤其涉及字符串的匹配方法和装置、数据检测方法、服务器。
背景技术
在一些应用场景中,有时需要对双方各自拥有的字符串进行匹配,同时又要求匹配过程中避免出现双方的字符串遭到泄露。
因此,亟需一种能够在保护双方数据隐私的前提下,高效、安全地完成字符串匹配的方法。
发明内容
本说明书提供了一种字符串的匹配方法和装置、数据检测方法、服务器,以降低数据处理量,在避免第一服务器和第二服务器获取对方所拥有的信息的前提下,高效、安全地完成字符串匹配。
本说明书提供的一种字符串的匹配方法和装置、数据检测方法、服务器是这样实现的:
一种字符串的匹配方法,包括:响应匹配请求,根据第二字符串生成多个子字符串;根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
一种字符串的匹配方法,包括:响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数;将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以目标系数作为参与安全多方计算的输入数据,所述目标系数为第二服务器根据第二整数确定出的,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
一种字符串的匹配方法,包括:响应匹配请求,根据第二字符串生成多个子字符串;根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;将所述多个第二整数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
一种字符串的匹配方法,包括:响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数;将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以第二整数作为参与安全多方计算的输入数据,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
一种数据检测方法,包括:第一服务器响应检测请求,根据预设的映射规则,将与第一数据关联的第一字符串映射成第一整数;第二服务器响应所述检测请求,根据与第二数据关联的第二字符串生成多个子字符串,并根据所述预设的映射规则将所述多个子字符串映射成多个第二整数;所述第二服务器根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;所述第一服务器和所述第二服务器分别以所述第一整数和所述目标系数作为输入数据,通过安全多方计算,以得到目标函数的计算结果,其中,所述目标函数的计算结果用于指示所述第二数据是否与第一数据关联。
一种数据检测方法,包括:第一服务器响应检测请求,根据预设的映射规则,将与第一数据关联的第一字符串映射成第一整数;第二服务器响应所述检测请求,根据与第二数据关联的第二字符串生成多个子字符串,并根据所述预设的映射规则将所述多个子字符串映射成多个第二整数;所述第一服务器和所述第二服务器分别以所述第一整数和所述第二整数作为输入数据,通过安全多方计算,以得到目标函数的计算结果,其中,所述目标函数的计算结果用于指示所述第二数据是否与第一数据关联。
一种字符串的匹配装置,包括:第一映射模块,用于响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数;第一计算模块,用于将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以目标系数作为参与安全多方计算的输入数据,所述目标系数为第二服务器根据第二整数确定出的,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
一种字符串的匹配装置,包括:第二生成模块,用于响应匹配请求,根据第二字符串生成多个子字符串;第二映射模块,用于根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;第二确定模块,用于根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;第二计算模块,用于将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器执行所述指令时实现响应匹配请求,根据第二字符串生成多个子字符串;根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
本说明书提供的一种字符串的匹配方法和装置、数据检测方法、服务器,通过先由第一服务器将所拥有的第一字符串根据预设的映射规则映射成对应的第一整数;由第二服务器根据所拥有的第二字符串,通过映射处理,得到与第二字符串的多个子字符串分别对应的多个第二整数,并根据上述第二整数构建多项式函数作为目标函数,获取该目标函数中的系数作为目标系数;再通过第一服务器和第二服务器分别以第一整数和目标系数作为输入数据,共同进行安全多方计算,以生成用于指示第一字符串是否与第二字符串匹配的目标函数的计算结果。从而可以有效地降低字符串匹配过程中的数据处理量,在避免第一服务器和第二服务器获取对方所拥有的信息的前提下,高效、安全地完成字符串匹配。
附图说明
为了更清楚地说明本说明书实施例,下面将对实施例中所需要使用的附图作简单地介绍,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是应用本说明书实施例提供的应用字符串的匹配方法的系统结构组成的一个实施例的示意图;
图2是在一个场景示例中,应用本说明书实施例提供的字符串的匹配方法的一种实施例的示意图;
图3是在一个场景示例中,应用本说明书实施例提供的字符串的匹配方法的一种实施例的示意图;
图4是在一个场景示例中,应用本说明书实施例提供的字符串的匹配方法的一种实施例的示意图;
图5是本说明书的一个实施例提供的字符串的匹配方法的流程示意图;
图6是本说明书的一个实施例提供的字符串的匹配方法的流程示意图;
图7是本说明书的一个实施例提供的字符串的匹配方法的流程示意图;
图8是本说明书的一个实施例提供的字符串的匹配方法的流程示意图;
图9是本说明书的一个实施例提供的数据检测方法的流程示意图;
图10是本说明书的一个实施例提供的服务器的结构组成示意图;
图11是本说明书的一个实施例提供的字符串的匹配装置的结构组成示意图;
图12是本说明书的一个实施例提供的字符串的匹配装置的结构组成示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
本说明书实施例提供一种字符串的匹配方法,所述字符串的匹配方法具体可以应用于包含有至少两个服务器的系统中。具体的,可以参阅图1所示,第一服务器和第二服务器可以通过有线或无线的方式相连。其中,上述第一服务器拥有并保管有第一字符串,上述第二服务器拥有并保管有第二字符串。
具体实施实施时,可以由上述第一服务器和/或第二服务器发起匹配请求。
第一服务器可以响应该匹配请求,根据预设的映射规则,将第一字符串映射成第一整数。
第二服务器可以响应该匹配请求,根据第二字符串生成多个子字符串;根据所述预设的映射规则将所述多个子字符串映射成多个第二整数,其中,所述多个第二整数中的各个第二整数分别与一个子字符串对应;再根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数。
第一服务器和第二服务器可以分别以各自所拥有的第一整数和目标系数作为输入数据,进行关于目标函数的安全多方计算,得到目标函数的计算结果,其中,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
这样可以在第一服务器和第二服务器不向对方泄露自身所拥有的信息的前提下,高效、安全地计算得到目标函数的计算结果,并根据该目标函数的计算结果确定出第一字符串是否与第二字符串匹配。
在本实施例中,所述第一服务器、第二服务器具体可以包括一种应用于数据处理系统一侧,能够实现数据传输、数据处理等功能的服务器。具体的,所述第一服务器、第二服务器例如可以为一个具有数据运算、存储功能以及网络交互功能的电子设备。或者,所述第一服务器、第二服务器也可以为运行于该电子设备中,为数据处理、存储和网络交互提供支持的软件程序。在本实施例中,并不具体限定所述第一服务器、第二服务器所包含的服务器的数量。所述第一服务器、第二服务器具体可以为一个服务器,也可以为几个服务器,或者,由若干服务器形成的服务器集群。
在一个具体的场景示例中,可以参阅图2所示,应用本说明书实施例提供的字符串的匹配方法在保护用户数据隐私的前提下,对参加体检的用户进行基因检测,以确定该用户是否有罹患AZ疾病风险。
在本场景示例中,AL基因检测机构的服务器(以下记为第一服务器)拥有并保存有与AZ疾病关联的基因片段。通常当发现用户的基因数据中存在该基因片段时,则可以判定该用户存在罹患AZ疾病的风险。ZB体检机构的服务器(以下记为第二服务器)保存有用户在该体检机构体检时所采集到的基因数据(例如,包含用户的多个基因片段的基因序列等)。
当前AL基因检测机构与ZB体检机构合作:ZB体检机构委托AL基因检测机构检测ZB体检机构的用户是否有罹患AZ疾病的风险。为了保护用户的隐私,ZB体检机构要求检测过程中AL基因检测机构无法获取用户的基因数据;同时,为了避免自身所拥有的用于检测AZ疾病的基因片段遭到泄露,AL基因检测机构要求检测过程中,ZB体检机构无法获取得到与AZ疾病关联的基因片段。
在本场景示例中,上述与AZ疾病关联的基因片段通过相应的数据处理后可以以字符串的形式保存在第一服务器,记为第一字符串,例如,字符串A:
。上述用户的基因数据通过相应的数据处理后可以以字符串的形式保存在第二服务器,记为第二字符串,例如,字符串B:
。
具体实施时,可以先由第二服务器发起关于AZ疾病的检测请求。当然,也可以由第一服务器发起检测请求。对此,本说明书不作限定。
具体的,参阅图3所示,第一服务器可以响应上述检测请求,根据预设的映射规则,确定出第一字符串A的ASCII(American Standard Code for Information Interchange,信息交换标准代码)编码值,并将该ASCII编码值确定为与第一字符串对应的第一整数,例如整数a。同时,第一服务器还会响应上述检测请求,确定出第一字符串中的字符数量为p,并只将上述第一字符串中的字符数量p发送给第二服务器。
参阅图4所示,第二服务器响应上述检测请求,可以根据第二字符串B生成对应的多个子字符串。具体的,第二服务器可以根据第一字符串中的字符数量p,按顺序依次从第二字符串中的字符中提取出多组相连的p个字符,得到对应的多个子字符串。其中,每个子字符串包含有p个字符。例如,可以按照上述方式,基于字符串B,可以生成得到以下多个子字符串:
、
……
。其中,上述多个子字符串的字符串数量记为u。上述多个子字符串的字符串数量的具体数值可以为第二字符串中字符数量(d)与第一字符串中字符数量(p)的差值加1。具体的,例如,u可以满足以下关系:u=d-p+1。
在得到上述多个子字符串后,第二服务器可以根据预设的映射规则,分别确定出上述u个子字符串中各个子字符串的ASCII编码值,并将该ASCII编码值确定为与该子字符串对应的第二整数。例如,按照上述方式,可以分别确定出与子字符串
对应的第二整数为
,确定出子字符串
的第二整数为
,……确定出子字符串
的第二整数为
。得到u个与第二字符串的u个子字符串分别对应的第二整数。
接着,第二服务器可以随机生成一个随机数,例如随机数r,作为第一随机数,并根据上述多个第二整数和所述第一随机数,构建预设次的多项式函数作为目标函数。其中,上述预设次的数值具体可以等于第二字符串的子字符串的字符串数量u。
具体的,第二服务器可以按照以下算式来根据多个第二整数和第一随机数,来生成预设次的多项式函数作为目标函数P(x):
其中,上述
分别为目标函数中的x的不同次幂项的系数,
为x的i次幂项的系数。
第二服务器可以根据上述目标函数,确定并获取上述目标函数中x的不同次幂项的系数:
作为目标系数。
进一步,第一服务器可以以第一整数a作为输入数据,第二服务器可以以目标系数
作为输入数据,通过执行预设的安全计算协议,来使用双方提供的输入数据,共同进行关于目标函数的安全多方计算,得到对应的目标函数的计算结果,例如,P(a)。再利用P(a)进行后续的数据处理。
此外,具体实施时,也可以是由第一服务器和第二服务器分别以第一整数和目标系数作为输入数据,通过安全多方计算,来计算基于目标函数得到的关联函数,得到关联函数的计算结果。再利用此进行后续的数据处理。
具体实施时,可以根据具体情况和双方达成的预设的安全计算协议,采用多种方式来进行关于目标函数的安全多方计算。
具体的,下面以采用基于同态加密的方式进行安全多方计算,且在第二服务器一侧生成最终的目标函数的计算结果的情况为例,说明具体如何通过安全多方计算,得到目标函数的计算结果。
第二服务器可以先将上述多个目标系数拆分成多个部分,得到u个分量数据(例如,多个share),分别记为:
。第二服务器可以通过同态加密的方式生成相互匹配的加密秘钥(可以记为PK)和解密秘钥(可以记为SK)。第二服务器可以利用上述加密秘钥对上述u个分量数据分别进行加密处理,得到对应的u个加密后的分量数据。例如,
、
……
,再将上述u个加密后的分量数据
、
……
分别发送给第一服务器。
第一服务器在确定最终目标函数的计算结果在第二服务器一侧生成的情况下,可以先生成一个随机数s作为第二随机数。并利用上述第二随机数对第一整数进行处理,来隐藏第一整数的真实值,同时也不会影响到与目标函数相关的计算。这样可以避免第二服务器后续通过目标函数的计算结果反推出第一整数的真实值造成第一服务器所拥有的数据遭到泄露。
具体的,第一服务器可以使用第一整数a与第二随机数相乘,得到处理后的第一整数,记为sa。第一服务器在接收到第二服务器发送的u个加密后的分量数据
、
……
后,可以在加密的状态下,利用上述处理后的第一整数,分别与u个加密后的分量数据
、
……
进行基于同态性质计算,得到对应的加密后的计算结果,记为C。其中,由于C是第一服务器在加密状态下对密文数据进行计算得到的结果,因此,C也是密文数据,第一服务器无法知道C所对应的计算结果的具体数值,无法通过上述C得到对应的基因数据,避免ZB体检机构的数据遭到泄露。第一服务器将上述加密后的计算结果发送至第二服务器。
第二服务器接收加密后的计算结果C,利用解密秘钥对上述计算结果C进行解密处理,在对解密后的数据进行处理,得到最终的目标函数的计算结果:s*P(a)。其中,上述目标函数的计算结果s*P(a)是一种明文数据。
进一步,第二服务器可以通过判断目标函数的计算结果的数值是否为0(当然根据不同情况也可以是其他的预设数值),来确定第一服务器所提供的第一整数a是否与第二服务器提供的多个第二整数中的某一个第二整数相同,进而判断该用户的基因数据是否存在与AZ疾病关联的基因片段,确定该用户是否存在罹患AZ疾病的风险。
具体的,如果根据上述目标函数的计算结果,确定数值等于0,则可以确定第一整数a与多个第二整数中的某一个第二整数相同。但是这种情况下第二服务器是无法确定出a具体与哪一个第二整数相同。相应的,只能确定出第一整数a所对应的第一字符串与基于第二字符串得到的多个字符串中的某一个子字符串相同,即第一字符串与第二字符串匹配。进而可以判断该用户的基因数据中存在某一个基因片段是和与AZ疾病关联的基因片段相同的,确定出该用户存在罹患AZ疾病的风险,得到对应该用户的AZ疾病检测结果。但是由于无法知道第一字符串具体与第二字符串的哪个子字符串相同,因此也无法知道与AZ疾病关联的基因片段具体是什么,从而可以避免AL基因检测机构所用于的数据遭到泄露。
如果根据上述目标函数的计算结果,确定数值不等于0,则可以确定第一整数a与多个第二整数中的任何一个第二整数都不相同。相应的,可以判断出第一字符串与基于第二字符串得到的多个字符串中的任何一个子字符串都不相同,即确定出第一字符串与第二字符串不匹配。进而可以判断该用户的基因数据中不存在某个基因片段是和与AZ疾病关联的基因片相同的,确定出该用户不存在罹患AZ疾病的风险,得到对应该用户的AZ疾病检测结果。
由上述场景示例可见,通过上述字符串的匹配方法,可以使得检测匹配过程中,第一服务器无法获取得到第二服务器所拥有的该用户的基因数据,同时第二服务器也无法获取得到第一服务器所拥有的与AZ疾病关联的基因片段数据,从而能够较好地保护双方所各自拥有的信息数据,避免信息数据在使用时出现泄露。并且基于上述方法,先将第一字符串和第二字符串映射成对应的整数,再利用第一整数,和基于第二整数得到的多项式函数的目标系数,来取代字符串进行安全多方计算,有效地减少了计算过程中涉及到的等于判定的计算次数,降低了计算的复杂度,从而能减少计算过程中的数据处理量,提高整体的数据处理效率。
参阅图5所示,本说明书实施例提供了一种字符串的匹配方法,其中,该方法具体应用于至少包含有第一服务器和第二服务器的系统中。具体实施时,该方法可以包括以下内容。
第一服务器根据预设的映射规则,将第一字符串映射成第一整数;第二服务器根据第二字符串生成多个子字符串,并根据所述预设的映射规则将所述多个子字符串映射成多个第二整数;所述第二服务器根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数。
所述第一服务器和所述第二服务器分别以所述第一整数和所述目标系数作为输入数据,通过安全多方计算,以得到目标函数的计算结果,其中,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
在一些实施例中,上述第一服务器具体可以拥有并保管第一字符串,上述第二服务器具体可以拥有并保管第二字符串。上述第一服务器和第二服务器希望能够在对方无法获取己方所拥有的字符串的前提下,高效地完成字符串的匹配。
在一些实施例中,根据不同的应用场景,上述第一字符串和第二字符串可以是包含有不同信息或者与不同数据关联的字符串。
具体的,在基因疾病检测场景中,上述第一字符串具体可以是与预设疾病(例如,糖尿病、心脏病、白血病等)的基因片段关联的字符串。例如,上述第一字符串可以是用于指示预设疾病的基因片段的字符串,也可以是包含有预设疾病的基因片段中的基因信息的字符串。相应的,上述第二字符串具体可以是与用户的基因数据关联的字符串。例如,上述第二字符串具体可以是用于指示用户的基因数据的字符串,也可以是包含有用户的基因数据中的基因信息的字符串。
在敏感词检测场景中,上述第一字符串具体可以是与预设的敏感词关联的字符串。例如,上述第一字符串可以是用于表征敏感词的字符串。相应的,上述第二字符串具体可以是与待检测的文本数据关联的字符串。例如,上述第二字符串可以是用于表征待检测的文章中的字符信息的字符串。
当然,上述所列举的第一字符串和第二字符串只是一种示意性说明。具体实施时,根据具体的应用场景和处理需要,上述第一字符串和第二字符串还可以是其他类型的字符串。对此,本说明书不作限定。
在一些实施例中,上述第一服务器和第二服务器中的任意一方可以发起匹配请求,以请求确定第一字符串是否与第二字符串匹配。
在一些实施例中,第一服务器响应上述匹配请求,可以先根据预设的映射规则将所拥有的第一字符串映射成对应的第一整数。这样后续可以使用第一整数替换第一字符串进行字符串的匹配,降低后续匹配过程中数据处理的复杂度,减少数据处理量。
在一些实施例中,具体实施时,第一服务器可以根据预设的映射规则,确定出第一字符串的ASCII编码值,并将第一字符串的ASCII编码值确定为与所述第一字符串对应的第一整数。第一服务器也可以根据预设的映射规则,计算出第一字符串的哈希值(例如,SHA3),并将第一字符串的哈希值确定为与所述第一字符串对应的第一整数。当然,上述所列举的映射方式只是一种示意性说明。具体实施时,根据具体情况,还可以采用其他类型的映射方式,将第一字符串映射成一一对应的第一整数。对此,本说明书不作限定。
在一些实施例中,第二服务器具体实施时,可以先响应匹配请求,根据第二字符串生成对应的多个子字符串。
具体的,第二服务器可以先确定出第一字符串中字符数量。例如,第一服务器可以先将第一字符串中字符数量单独发送给第二服务器,或者第一服务器可以主动发起携带有第一字符串中字符数量的匹配请求。相应的,第二服务器可以获取并确定出第一字符串中字符数量。
第二服务器可以根据第一字符串的数量,和第二字符串,生成多个子字符串。
例如,第二服务器可以按顺序依次从第二字符串的字符中获取一组包含有与第一字符串中字符数量相同数量的字符作为一个子字符串,从而可以得到多个子字符串。其中,上述多个子字符串中的各个子字符串的字符数量与第一字符串的字符数量相同。
第二服务器根据预设的映射规则,将上述多个子字符串分别映射成对应的第二整数。
具体的,类似于第一服务器映射第一字符串,第二服务器可以根据预设的映射规则,确定出多个子字符串中的各个子字符串的ASCII编码值,并将子字符串的ASCII编码值确定为与该子字符串对应的第二整数,从而得到多个第二整数。第二服务器也可以根据预设的映射规则,计算出多个子字符串中的各个子字符串的哈希值,并将子字符串的哈希值确定为与该子字符串对应的第二整数等。
第二服务器可以根据上述多个第二整数,构建相应的多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数。
具体的,第二服务器可以根据上述多个第二整数,构建预设次的多项式函数作为目标函数。例如,第二服务器可以将多个子字符串的字符串数量确定为预设次的数值,从而可以利用上述多个第二整数,构建如下所示的预设次的多项式函数。
其中,上述
……
……
可以分别可以表示为与一个子字符串对应的第二整数,上述
可以表示为与编号为i的子字符串对应的第二整数,上述i的取值为大于等于1且小于等于u,u具体可以表示为多子个字符串的字符串数量。
对上述多项式函数展开,可以得到以下所示的包含有系数的多项式函数,可以将该多项式函数确定为目标函数P(a)。
其中,上述
可以分别可以表示为目标函数中的一个系数,上述
具体可以表示为
(即x的i次幂项)的系数,上述i的取值为大于等于0且小于等于u,u具体可以表示为多子个字符串的字符串数量。
第二服务器可以根据上述目标函数,获取上述系数作为目标系数。
在一些实施例中,上述第一服务器可以将第一整数作为输入数据,上述第二服务器可以将上述目标系数作为输入数据,根据预设的安全计算协议,共同进行针对目标函数的安全多方计算,以生成对应的目标函数的计算结果。
在一些实施例中,具体实施时,也可以是上述第一服务器将第一整数作为输入数据,第二服务器将目标系数作为输入数据,根据预设的安全计算协议,共同进行针对关联函数的安全多方计算,以生成对应的关联函数的计算结果。其中,上述关联函数具体可以理解为一种基于目标函数得到的函数,例如,可以是目标函数变形后的函数,也可以是目标函数与某一个随机数相乘得到的函数等。上述关联函数的计算结果类似于目标函数的计算结果,也可以用于指示第一字符串与第二字符串是否匹配。相对于目标函数的计算结果,关联函数的计算结果具有更高的保密性。
在一些实施例中,上述目标函数的计算结果具体可以是一种明文数据。例如,具体可以表示为P(a)。
在一些实施例中,为了避免第一服务器或者第三方根据上述目标函数的计算结果反推出第二服务器所拥有的第二字符串,第二服务器在生成目标函数时,可以先生成第一随机数,例如r,再根据第一随机数和多个第二整数来生成目标函数。其中,上述第一随机数的具体数值第二服务器不对外公开。第二服务器再基于上述方式得到目标函数来获取并利用对应的目标系数作为输入数据参与具体的安全多方计算,以得到目标函数的计算结果。
具体的,例如,第二服务器可以根据第一随机数和多个第二整数,按照以下方式来生成目标函数:
。
其中,上述第一随机数r的具体数值可以是第二服务器根据随机数种子随机生成的数值。也可以是第二服务器通过量子随机数生成器生成的数值。
这样即使第一服务器或者第三方根据目标函数的计算结果反推出目标系数的具体数值,但由于目标系数是基于第二整数和第一随机数相乘所得到的,而第一随机数r是未知的。因此,第一服务器或者第三方还是无法进一步反推出第二整数的具体数值,也就无法获取第二字符串,从而可以进一步降低了第二服务器所拥有的第二字符串被泄露的风险。
在一些实施例中,根据具体情况,例如在一些安全性要求相对不高的场景中,也可以不生成第一随机数,直接根据上述多个第二整数来生成目标函数。例如,还可以根据多个第二整数,按照以下方式来生成目标函数:
。
在一些实施例中,为了避免第二服务器或者第三方根据上述目标函数的计算结果反推出第一服务器所拥有的第一字符串,上述第一服务器在生成得到与第一字符串对应的第一整数后,还可以对第一整数进行处理,得到处理后的第一整数,以隐藏第一整数的真实值。
具体的,第一服务器在参与安全多方计算之前,可以先生成第二随机数,例如s。具体实施时,第一服务器可以根据随机数种子或者量子随机数生成器随机生成一个数值作为第二随机数。其中,上述第二随机数的具体数值第一服务器不对外公开。
第一服务器再利用上述第二随机数对第一整数进行处理,得到处理后的第一整数。例如,第一服务器可以利用上述第二随机数乘以第一整数,将乘积作为处理后的第一整数,例如,sa。进而可以利用上述处理后的第一整数作为输入数据,与第二服务器进行安全多方计算。
这时第一服务器输入的用于参与安全多方计算的输入数据不再是a,而是利用第二随机数处理之后隐藏了第一整数的真实数值的处理后的第一整数sa。第一服务器和第二服务器通过安全多方计算得到的目标函数的计算结果也不再是P(a),而是s*P(a)。
这样即使后续第二服务器或者第三方根据计算结果反推出第一服务器的输入数据的具体数值,但由于上述数值是利用第二随机数对第一整数进行处理后得到的数值,而第二随机数s是未知的。因此,第二服务器或者第三方还是无法进一步反推出第一整数的具体数值,也就无法获取第一字符串,进一步降低了第一服务器所拥有的第一字符串被泄露的风险。
在一些实施例中,为进一步降低安全计算过程中的数据处理量,第一服务器还可以根据第一整数,先生成多个第一整数的不同次幂,作为输入数据与第二服务器一起进行安全多方计算。例如,第一服务器可以根据第一整数a,先在第一服务器本地生成好第一整数的一次幂,记为a,生成第一整数的二次幂,记为
;……生成第一整数的u次幂,记为
;再将上述预先已经计算好的包括a、
……
的多个第一整数的不同次幂作为输入数据,与第二服务器一起进行具体的安全多方计算。
当然,具体实施时,还可以在按照上述方式生成多个第一整数的不同次幂后,再利用第二随机数(例如s)对上述多个第一整数的不同次幂分别进行处理,得到多个处理后的第一整数的不同次幂,例如,包括、
……
的多个处理后的第一整数。再利用上述多个处理后的第一整数作为输入数据,与第二服务器一起进行具体的安全多方计算。
在一些实施例中,上述第一服务器和第二服务器可以分别将各自拥有的数据作为输入数据,根据预设的安全计算协议,采用多种方式来共同进行基于目标函数的安全多方计算,以得到对应的目标函数的计算结果。例如,可以根据预设的安全计算协议,采用基于同态加密的方式进行具体的基于目标函数的安全多方计算。也可以根据预设的安全计算协议,采用基于混淆电路的方式进行具体的基于目标函数的安全多方计算。此外,还可以引入第三服务器,由第三服务器和第一服务器、第二服务器三方共同进行安全多方计算。
在一些实施例中,以基于同态加密的方式进行具体的安全多方计算为例,具体实施时,第二服务器可以先将所述目标系数拆分成多个分量数据;再生成同态加密的加密秘钥和解密秘钥;利用所述加密秘钥对所述多个分量数据分别进行加密处理,得到多个加密后的分量数据;将所述多个加密后的分量数据发送至第一服务器。第一服务器可以利用所述第一整数,在加密的状态下,分别与所述多个加密后的分量数据进行基于目标函数的同态性质计算,得到对应的加密后的计算结果,并将所述加密后的计算结果反馈给第二服务器。第二服务器接收加密后的计算结果,再根据所述解密秘钥,和所述加密后的计算结果,通过相应的处理,得到目标函数的计算结果。
在一些实施例中,还可以是第一服务器先将第一整数拆分成多个分量数据;生成同态加密的加密秘钥和解密秘钥;利用加密秘钥对所述多个分量数据分别进行加密处理,得到多个加密后的分量数据;将上述多个加密后的分量数据发送至第二服务器。第二服务器可以利用目标系数,在加密的状态下,分别与多个加密后的分量数据进行基于目标函数的同态性质计算,得到对应的加密后的计算结果,并将所述加密后的计算结果反馈给第一服务器。第一服务器接收加密后的计算结果,再根据所述解密秘钥,和所述加密后的计算结果,通过相应的处理,得到目标函数的计算结果。
当然,上述所列举的进行安全多方计算的方式只是一种示意性说明。具体实施时,根据具体的应用场景还可以采用其他合适的方式来进行具体的安全多方计算。
在一些实施例中,具体实施时,还可以通过检测第一服务器和第二服务器是否具有目标函数的计算结果的获取权限,将上述目标函数的计算结果发送给具有该权限的服务器。或者由具有该权限的服务器来最后生成目标函数的计算结果。
具体的,例如,如果第一服务器具有该权限,可以由第一服务器获得最终的目标函数的计算结果。如果第二服务器具有该权限,可以由第二服务器获得目标函数的计算结果。又如果第一服务器和第二服务器都具有该权限,可以由第一服务器和第二服务器获得该目标函数的计算结果。
在一些实施例中,具体实施时,可以根据上述目标函数的计算结果确定第一字符串是否与第二字符串匹配。其中,第一字符串与第二字符串匹配具体可以理解为第一字符串与基于第二字符串得到的多个子字符串中的至少一个子字符串相同。
在一些实施例中,具体实施时,如果根据上述目标函数的计算结果,确定数值等于0,可以确定第一整数a与多个第二整数中的某一个第二整数相同,但是无法确定出a具体与哪一个第二整数相同。进一步,可以确定出第一整数a所对应的第一字符串与基于第二字符串得到的多个字符串中的某一个子字符串相同,确定第一字符串与第二字符串匹配。
如果根据上述目标函数的计算结果,确定数值不等于0,则可以确定第一整数a与多个第二整数中的任何一个第二整数都不相同。相应的,可以确定出第一字符串与基于第二字符串得到的多个字符串中的任何一个子字符串都不相同,确定第一字符串与第二字符串不匹配。
由上可见,本说明书实施例提供的字符串的匹配方法,通过先由第一服务器将所拥有的第一字符串根据预设的映射规则映射成对应的第一整数;同时,由第二服务器根据所拥有的第二字符串,通过映射处理,得到与第二字符串的多个子字符串分别对应的多个第二整数,并根据上述第二整数生成相应的目标系数;再通过第一服务器和第二服务器分别以第一整数和目标系数作为输入数据,共同进行安全多方计算,以得到用于指示第一字符串是否与第二字符串匹配的目标函数的计算结果。从而可以有效地降低数据处理量,在避免第一服务器和第二服务器获取对方所拥有的信息的前提下,高效、安全地完成字符串匹配。
参阅图6所示,本说明书实施例还提供了一种字符串的匹配方法。该方法具体可以应用于第二服务器一侧。具体实施时,该方法可以包括以下内容。
S601:响应匹配请求,根据第二字符串生成多个子字符串。
S602:根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数。
S603:根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数。
S604:将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
在一些实施例中,所述根据第二字符串生成多个子字符串,具体实施时,可以包括以下内容:确定第一字符串的字符数量;根据所述第一字符串的字符数量,和所述第二字符串,生成多个子字符串,其中,所述多个子字符串中的各个子字符串的字符数量与第一字符串的字符数量相等。
在一些实施例中,所述根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数,具体实施时,可以包括以下内容:根据预设的映射规则,确定出多个子字符串中的各个子字符串的ASCII编码值,并将子字符串的ASCII编码值确定为与所述子字符串对应的第二整数;或,根据预设的映射规则,计算出多个子字符串中的各个子字符串的哈希值,并将子字符串的哈希值确定为与所述子字符串对应的第二整数。当然,上述所列举的映射方式只是一种示意性说明。具体实施时,还可以根据具体情况和处理需求,选择其他类型的但能够确定出字符串和整数之间的一一对应关系的映射规则作为预设的映射规则,再利用该预设的映射规则将多个子字符串映射成对应的多个整数。
在一些实施例中,具体实施时,可以根据所述多个第二整数,生成预设次的多项式函数作为目标函数,其中,所述预设次的数值等于多个子字符串的字符串数量;获取所述目标函数中的系数,作为所述目标系数。
在一些实施例中,具体实施时,可以先确定出多个子字符串的字符串数量,并将上述字符串数量作为预设次;再根据所述多个第二整数,构建预设次的多项式函数作为目标函数。
在一些实施例中,具体实施时,可以获取目标函数中各个自变量(例如x)的不同次幂项的系数作为目标系数。其中,上述目标系数具体可以包括多个目标系数,上述多个目标系数的数量具体可以等于预设次加1。其中,上述目标系数可以为0。
在一些实施例中,所述根据所述多个第二整数,构建多项式函数作为目标函数,具体可以包括:生成第一随机数;根据所述第一随机数,和所述多个第二整数,生成预设次的多项式函数作为目标函数,其中,所述预设次的数值等于多个子字符串的字符串数量。通过上述方式并利用第一随机数,结合第二整数来生成目标函数,可以隐藏第二整数的真实值,进一步降低了第二字符串遭到泄露的风险。
在一些实施例中,在确定第一服务器或者其他服务器具有目标函数的计算结果的获取权限的情况下,或者确定目标函数的计算结果会在第一服务器或者其他服务器一侧生成的情况下, 第二服务器可以按照上述方式来生成并利用第一随机数生成目标函数,获取相应的目标系数,以避免第一服务器或者其他服务器(例如第三方的服务器)根据目标函数的计算结果反推出第二服务器所拥有的第二字符串。
在一些实施例中,在将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果后,所述方法具体实施时,还可以包括以下内容:在确定具有目标函数的计算结果的获取权限的情况下,得到目标函数的计算结果;根据目标函数的计算结果,确定所述第一字符串是否为第二字符串的子串;在确定所述第一字符串为第二字符串的子串的情况下,确定第一字符串与第二字符串匹配。
在一些实施例中,由于目标函数的计算结果是一个明文数据。因此,可以确定并利用目标函数的计算结果的数值,与预设数值(例如0)进行数值比较。如果目标函数的计算结果的数值与预设数值相同,则可以判断第一字符串至少与第二字符串的多个子字符串中的某一个子字符串相同,确定出第一字符串是第二字符串的子串,进而可以确定第一字符串与第二字符串匹配。
如果目标函数的计算结果与预设数值不相同,则可以判断第一字符串与第二字符串中的多个子字符串中的任何一个子字符串都不相同,确定出第一字符串不是第二字符串的子串,进而可以确定第一字符串与第二字符串不匹配。
在一些实施例中,所述第一字符串具体可以包括与预设的敏感词关联的字符串;相应的,所述第二字符串具体可以包括与待检测的文本数据关联的字符串。
在一些实施例中,所述第一字符串具体还可以包括与预设疾病的基因片段关联的字符串;相应的,所述第二字符串具体还可以包括与用户的基因数据关联的字符串。
当然,需要说明是,上述所列举的第一字符串和第二字符串只是一种示意性说明。具体实施时,根据具体的应用场景和处理需求,上述第一字符串、第二字符串还可以是包含其他内容、其他类型的字符串。例如,在身份验证场景中,上述第一字符串还可以是与待验证身份的用户的指纹关联的字符串;相应的,上述第二字符串还可以是与预设的指纹数据库中已有指纹关联的字符串等等。
在一些实施例中,将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,具体实施时,可以包括:将所述目标系数拆分成多个分量数据;生成同态加密的加密秘钥和解密秘钥;利用所述加密秘钥对所述多个分量数据分别进行加密处理,得到多个加密后的分量数据;将所述多个加密后的分量数据发送至第一服务器;其中,所述第一服务器用于利用所述第一整数,分别与所述多个加密后的分量数据进行基于目标函数的同态性质计算,得到对应的加密后的计算结果,并将所述加密后的计算结果反馈给第二服务器;根据所述解密秘钥,和所述加密后的计算结果,生成目标函数的计算结果。
当然,上述所列举的基于同态加密的方式进行安全多方计算只是一种示意性说明。具体实施时,还可以根据具体情况,采用其他合适的方式进行安全多方计算。例如,还可以采用基于混淆电路的方式进行安全多方计算。对此,本说明书不作限定。
参阅图7所示,本说明书实施例还提供了一种字符串的匹配方法。该方法具体可以应用于第一服务器一侧。具体实施时,该方法可以包括以下内容。
S701:响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数。
S702:将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以目标系数作为参与安全多方计算的输入数据,所述目标系数为第二服务器根据第二整数确定出的,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
在一些实施例中,所述根据预设的映射规则,将第一字符串映射成第一整数,具体实施时,可以包括以下内容:根据预设的映射规则,确定出第一字符串的ASCII编码值,并将第一字符串的ASCII编码值确定为与所述第一字符串对应的第一整数;或,根据预设的映射规则,计算出第一字符串的哈希值,并将第一字符串的哈希值确定为与所述第一字符串对应的第一整数等等。
在一些实施例中,在将第一字符串映射成第一整数后,所述方法具体实施时,还可以包括以下内容:检测第二服务器是否具有目标函数的计算结果的获取权限;在确定第二服务器具有目标函数的计算结果的获取权限的情况下,生成第二随机数;利用第二随机数对第一整数进行处理,得到处理后的第一整数;相应的,将所述处理后的第一整数作为输入数据,和第二服务器进行安全多方计算。
在一些实施例中,在确定第二服务器或者其他服务器具有目标函数的计算结果的获取权限的情况下,或者确定目标函数的计算结果会在第二服务器或者其他服务器一侧生成的情况下, 第一服务器可以按照上述方式生成并利用第二随机数处理第一整数,使用处理后的第一整数作为输入数据,参与安全多方计算,以避免第二服务器或者其他服务器根据目标函数的计算结果反推出第一服务器所拥有的第一字符串。
在一些实施例中,在将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果后,所述方法具体实施时,还可以包括以下内容:在确定具有目标函数的计算结果的获取权限的情况下,得到目标函数的计算结果;根据目标函数的计算结果,确定所述第一字符串是否为第二字符串的子串;在确定所述第一字符串为第二字符串的子串的情况下,确定第一字符串与第二字符串匹配。
由上可见,本说明书实施例提供的字符串的匹配方法,通过先由第一服务器将所拥有的第一字符串根据预设的映射规则映射成对应的第一整数;由第二服务器根据所拥有的第二字符串,通过映射处理,得到与第二字符串的多个子字符串分别对应的多个第二整数,并根据上述第二整数生成相应的目标系数;再通过第一服务器和第二服务器分别以第一整数和目标系数作为输入数据,共同进行安全多方计算,以生成用于指示第一字符串是否与第二字符串匹配的目标函数的计算结果。从而可以有效地降低数据处理量,在避免第一服务器和第二服务器获取对方所拥有的信息的前提下,高效、安全地完成字符串匹配。还通过第二服务器先生成第一随机数,再根据第一随机数和多个第二整数生成预设次的多项式函数作为目标函数,并获取该目标函数的系数作为目标系数,来参与同第一服务器的安全多方计算,从而可以更有效地保护第二服务器的信息安全,进一步避免第二服务器所拥有的信息泄露给第一服务器或者其他第三方。还通过第一服务器在生成第一整数后,生成第二随机数,并利用第二随机数对第一整数进行处理,再将处理后的第一整数作为输入数据,参与同第二服务器的安全多方计算,从而可以更有效地保护第一服务器有的信息安全,进一步避免第一服务器所拥有的信息泄露给第二服务器或者其他第三方。
参阅图8所示,本说明书实施例还提供了另一种字符串的匹配方法。该方法具体可以应用至少包含有第一服务器和第二服务器的系统中。具体实施时,可以包括以下内容。
第一服务器根据预设的映射规则,将第一字符串映射成第一整数;第二服务器根据第二字符串生成多个子字符串,并根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数。
第一服务器和第二服务器分别以第一整数和第二整数作为输入数据,进行安全多方计算,以得到目标函数的计算结果,其中,上述目标函数的计算结果具体可以用于指示第一字符串是否与第二字符串匹配。
在一些实施例中,上述第一整数与第一字符串对应,上述第二整数分别与第二字符串的多个字符串中的一个子字符串对应。
在一些实施例中,具体实施实施,第一服务器和第二服务器可以分别以第一整数和第二整数作为输入数据,共同进行基于目标函数的安全多方计算,得到目标函数的计算结果。其中,上述目标函数具体可以是一种能够比较第一整数和第二整数的数值是否相等的函数。
在一些实施例中,具体实施时,可以根据目标函数的计算结果,确定第一整数和第二整数的数值是否相等。如果根据目标函数的计算结果,确定第一整数和多个第二整数中的至少一个相等,可以判断第一字符串和第二字符串的至少一个子字符串相同,进而可以确定第一字符串与第二字符串匹配。如果根据目标函数的计算结果,确定第一整数和多个第二整数都不相等,可以判断第一字符串和第二字符串的任意一个子字符串都不同,进而可以确定第一字符串与第二字符串不匹配。
本说明书实施例还提供了一种应用于第一服务器一侧的字符串的匹配方法。该方法具体实施时,可以包括以下内容。
S1:响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数。
S2:将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以第二整数作为参与安全多方计算的输入数据,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
本说明书实施例还提供了一种应用于第二服务器一侧的字符串的匹配方法。该方法具体实施时,可以包括以下内容。
S1:响应匹配请求,根据第二字符串生成多个子字符串。
S2:根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数。
S3:将所述多个第二整数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
参阅图9所示,本说明书实施例还提供了一种数据检测方法。该方法具体可以应用至少包含有第一服务器和第二服务器的系统中。具体实施时,该方法可以包括以下内容。
第一服务器响应检测请求,根据预设的映射规则,将与第一数据关联的第一字符串映射成第一整数。第二服务器响应所述检测请求,根据与第二数据关联的第二字符串生成多个子字符串,并根据所述预设的映射规则将所述多个子字符串映射成多个第二整数;所述第二服务器根据所述多个第二整数,得到对应目标系数。
所述第一服务器和所述第二服务器分别以所述第一整数和所述目标系数作为输入数据,进行安全多方计算,以得到目标函数的计算结果,其中,所述目标函数的计算结果用于指示所述第二数据是否与第一数据关联。
在一些实施例中,所述第一数据具体可以包括敏感词,所述第二数据具体可以包括待检测的文本数据。当然,根据具体的应用场景和处理需求,上述所列举的第一数据、第二数据还可以包括其他类型或内容的数据。例如,上述第一数据还可以包括与疾病关联的基因片段,第二数据还可以包括用户的基因数据等。
在一些实施例中,上述第一字符串可以是基于第一数据生成的,与第一数据对应。上述第二字符串可以是基于第二数据生成的,与第二数据对应。
具体的,上述第一字符串、第二字符串可以是分别包含有第一数据、第二数据中的具体信息内容的字符串;也可以是不包含有具体信息内容,但能够分别指示第一数据、第二数据所包含的具体信息内容的字符串等。
在一些实施例中,具体实施前,第一服务器可以根据所拥有的第一数据,生成与第一数据关联的第一字符串。例如,第一服务器可以将第一数据所包含的信息内容转换成预设格式的字符,再将上述字符按顺序排列作为与第一数据关联的第一字符串。类似的,第二服务器可以根据所拥有的第二数据,生成与第二数据关联的第二字符串。
在一些实施例中,在生成目标函数的计算结果后,具有目标函数的计算结果的获取权限的服务器可以获取该目标函数的计算结果,该服务器进一步可以根据该目标函数的计算结果来确定第一数据与第二数据是否关联。
在一些实施例中,上述根据该目标函数的计算结果来确定第一数据与第二数据是否关联,具体实施时,可以包括以下内容。根据目标函数的计算结果可以确定第一字符串是否为第二字符串的子串(即确定第一字符串是否与第二字符串匹配)。在根据目标函数的计算结果确定第一字符串为第二字符串的子串的情况下,可以确定第二数据中包含有的第一数据,确定第一数据与第二数据关联。例如,可以确定出待检测的文本数据中存在敏感词。在根据目标函数的计算结果确定第一字符串不是第二字符串的子串的情况下,可以确定第二数据中不包含有的第一数据,确定第一数据与第二数据不关联。例如,可以确定出待检测的文本数据中不存在敏感词。
当然,上述所列举的根据目标函数的计算结果确定第一数据与第二数据是否关联的方式只是一种示意性说明。具体实施时,根据具体的应用场景和处理需求,还可以采用其他合适的方式来根据目标函数的计算结果来判断第一数据和第二数据之间的关系,以确定第一数据与第二数据是否关联。对此,本说明书不作限定。
本说明书实施例还提供了另一种数据检测方法。该方法具体可以应用至少包含有第一服务器和第二服务器的系统中。具体实施时,可以包括以下内容。
第一服务器响应检测请求,根据预设的映射规则,将与第一数据关联的第一字符串映射成第一整数;第二服务器响应所述检测请求,根据与第二数据关联的第二字符串生成多个子字符串,并根据所述预设的映射规则将所述多个子字符串映射成多个第二整数。
所述第一服务器和所述第二服务器分别以所述第一整数和所述第二整数作为输入数据,通过安全多方计算,以得到目标函数的计算结果,其中,所述目标函数的计算结果用于指示所述第二数据是否与第一数据关联。
在一些实施例中,在生成目标函数的计算结果后,具有目标函数的计算结果的获取权限的服务器可以获取该目标函数的计算结果,该服务器进一步可以根据该目标函数的计算结果来确定第一数据与第二数据是否关联。
本说明书实施例还提供一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:响应匹配请求,根据第二字符串生成多个子字符串;根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
为了能够更加准确地完成上述指令,参阅图10所示,本说明书实施例还提供了另一种具体的服务器,其中,所述服务器包括网络通信端口1001、处理器1002以及存储器1003,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述网络通信端口1001,具体可以用于接收或发起匹配请求。
所述处理器1002,具体可以用于响应匹配请求,根据第二字符串生成多个子字符串;根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
所述存储器1003,具体可以用于存储相应的指令程序。
在本实施例中,所述网络通信端口1001可以是与不同的通信协议进行绑定,从而可以发送或接收不同数据的虚拟端口。例如,所述网络通信端口可以是负责进行web数据通信的端口,也可以是负责进行FTP数据通信的端口,还可以是负责进行邮件数据通信的端口。此外,所述网络通信端口还可以是实体的通信接口或者通信芯片。例如,其可以为无线移动网络通信芯片,如GSM、CDMA等;其还可以为Wifi芯片;其还可以为蓝牙芯片。
在本实施例中,所述处理器1002可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施例中,所述存储器1003可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供另一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数;将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以目标系数作为参与安全多方计算的输入数据,所述目标系数为第二服务器根据第二整数确定出的,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
本说明书实施例还提供了一种基于上述字符串的匹配方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:响应匹配请求,根据第二字符串生成多个子字符串;根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数;根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数;将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
在本实施例中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory, RAM)、只读存储器(Read-Only Memory, ROM)、缓存(Cache)、硬盘(Hard DiskDrive, HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施例中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
本说明书实施例还提供了另一种基于上述字符串的匹配方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数;将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以目标系数作为参与安全多方计算的输入数据,所述目标系数为第二服务器根据第二整数确定出的,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
参阅图11所示,在软件层面上,本说明书实施例还提供了一种字符串的匹配装置,该装置具体可以包括以下的结构模块。
第一映射模块1101,具体可以用于响应匹配请求,根据预设的映射规则,将第一字符串映射成第一整数。
第一计算模块1102,具体可以用于将所述第一整数作为输入数据,和第二服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第二服务器以目标系数作为参与安全多方计算的输入数据,所述目标系数为第二服务器根据第二整数确定出的,所述第二整数为第二服务器基于第二字符串通过映射处理得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
参阅图12所示,本说明书实施例还提供了另一种字符串的匹配装置,具体实施时,可以包括以下的结构模块。
生成模块1201,具体可以用于响应匹配请求,根据第二字符串生成多个子字符串。
第二映射模块1202,具体可以用于根据预设的映射规则,将所述多个子字符串映射成对应的多个第二整数。
确定模块1203,具体可以用于根据所述多个第二整数,构建多项式函数作为目标函数,并获取所述目标函数中的系数,作为目标系数。
第二计算模块1204,具体可以用于将所述目标系数作为输入数据,和第一服务器进行安全多方计算,以得到目标函数的计算结果,其中,所述第一服务器以第一整数作为参与安全多方计算的输入数据,所述第一整数为第一服务器根据预设的映射规则对第一字符串进行映射后得到的,所述目标函数的计算结果用于指示所述第一字符串是否与所述第二字符串匹配。
由上可见,基于本说明书实施例提供的字符串的匹配装置,可以有效地降低数据处理量,在避免双方获取对方所拥有的字符串等数据的前提下,高效、安全地完成字符串匹配。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施例的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。