一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种双随机数据混淆查询方法、装置和系统与流程

2023-01-17 12:32:01 来源:中国专利 TAG:


1.本发明涉及隐私数据处理领域,具体涉及一种双随机数据混淆查询方法、装置和系统。


背景技术:

2.在数据流通过程中,查询方向被查询方直接查询数据时,会产生数据的泄漏。
3.例如:对于有过违约记录的用户,通常银行是不会再对其进行贷款的。但是一家放贷的机构由于数据范围小,不能对新的用户之前在其他机构是否有违约的记录进行判断。
4.在没有数据混淆的模式下,查询方发送一个明文的信息给被查方时,被查方即知晓了该用户正在向查询方进行贷款活动,这样会产生两方面的影响:一是用户行为信息被泄漏到被查询方,二是被查询方可以对这一信息进行记录和统计,以确定该用户是否在多方进行审贷,进行数据二次销售。


技术实现要素:

5.针对上述问题,本发明实施例的一个目的是提供一种双随机数据混淆查询方法、装置和系统,实现无信息泄漏的最高效查询。
6.为达上述目的,第一方面,本发明实施例提供了一种双随机数据混淆查询方法,所述方法包括:查询方根据目标用户的身份标识,生成第一哈希值;查询方生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值;所述查询方将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值;查询方截取第一哈希值的前n位,得到第二哈希值,其中n是正整数;查询方向被查询方发送查询请求,查询请求携带第一身份混淆值和第二哈希值;被查询方从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表;被查询方生成第二随机数,并对所述第二随机数进行哈希变换得到第二随机哈希值;被查询方对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表;被查询方对第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值;被查询方向查询方返回第二身份混淆值和第二用户数据列表;查询方将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表;
查询方判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
7.进一步地,查询方截取所述第一哈希值的前n位,得到第二哈希值,包括:根据哈希变换对数据的散列形式确定哈希数据取值方式;根据哈希数据取值方式以及查询目标数据量确定目标用户的被查询概率;根据被查询概率确定要截取的第一哈希值的前n位,得到第二哈希值。
8.进一步地,哈希变换的方式为md5哈希算法,加法运算为36进制加法运算。
9.第二方面,本发明实施例提供了一种双随机数据混淆查询方法,应用于查询方,所述方法包括:根据目标用户的身份标识,生成第一哈希值;生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值;将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值;截取第一哈希值的前n位,得到第二哈希值,其中n是正整数;向被查询方发送查询请求,查询请求携带第一身份混淆值和第二哈希值;接收被查询方返回的第二身份混淆值和第二用户数据列表;其中,所述第二身份混淆值是由被查询方对第一身份混淆值与第二随机哈希值进行加法运算得到的;第二随机哈希值是由被查询方生成第二随机数,并对第二随机数进行哈希变换得到的;第二用户数据列表是由被查询方对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算得到的;第一用户数据列表是指在被查询方从数据库中获取键的前缀为第二哈希值的数据得到的;将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表;判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
10.进一步地,截取第一哈希值的前n位,得到第二哈希值,包括:根据哈希变换对数据的散列形式确定哈希数据取值方式;根据哈希数据取值方式以及查询目标数据量确定目标用户的被查询概率;根据被查询概率确定要截取的第一哈希值的前n位,得到第二哈希值。
11.进一步地,哈希变换采用md5哈希算法,加法运算为36进制加法运算。
12.第三方面,本发明实施例提供了一种双随机数据混淆查询方法,应用于被查询方,所述方法包括:接收查询方发送的查询请求,查询请求中携带第一身份混淆值和第二哈希值;其中,第一身份混淆值是由查询方对第一随机哈希值与第一哈希值进行加法运算得到的;第一随机哈希值是由查询方生成第一随机数,并对第一随机数进行哈希变换得到的;第一哈希值是由查询方对目标用户的身份标识进行哈希变换得到的;第二哈希值是由查询方截取第一哈希值的前n位得到的,其中n是正整数;从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表;生成第二随机数,并对所述第二随机数进行哈希变换得到第二随机哈希值;对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希
值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表;对第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值;向查询方返回第二身份混淆值和第二用户数据列表。
13.第四方面,本发明实施例提供一种双随机数据混淆查询装置,应用于查询方,所述装置包括:哈希模块,用于根据目标用户的身份标识,生成第一哈希值;第一随机哈希值确定模块,用于生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值;第一随机混淆模块,用于根据第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值;截取模块,用于截取第一哈希值的前n位,得到第二哈希值,其中n是正整数;第一发送模块,用于向被查询方发送查询请求,查询请求携带第一身份混淆值和第二哈希值;第一接收模块,用于接收被查询方返回的第二身份混淆值和第二用户数据列表;其中,第二身份混淆值是由被查询方对第一身份混淆值与第二随机哈希值进行加法运算得到的;第二随机哈希值是由被查询方生成第二随机数,并对第二随机数进行哈希变换得到的;第二用户数据列表是由被查询方对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算得到的;第一用户数据列表是指被查询方从数据库中获取键的前缀为第二哈希值的数据得到的;第三用户数据列表确定模块,用于将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表;用户确定模块,用于判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
14.第五方面,本发明实施例提供了一种双随机数据混淆查询装置,应用于被查询方,所述装置包括:第二接收模块,用于接收查询方发送的查询请求,查询请求中携带第一身份混淆值和第二哈希值;其中,第一身份混淆值是由查询方对第一随机哈希值与第一哈希值进行加法运算得到的;第一随机哈希值是由查询方生成第一随机数,并对第一随机数进行哈希变换所得;第一哈希值是由查询方对目标用户的身份标识进行哈希变换得到的;第二哈希值是由查询方截取第一哈希值的前n位得到的,其中n是正整数;数据获取模块,用于从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表;第二随机哈希值确定模块,用于生成第二随机哈希值,第二随机哈希值是由被查询方生成第二随机数,并对第二随机数进行哈希变换得到的;第二用户数据列表确定模块,用于对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表;第二随机混淆模块,用于根据第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值;
第二发送模块,用于向查询方返回第二身份混淆值和第二用户数据列表。
15.第六方面,本发明实施例提供了一种双随机数据混淆查询系统,其包括:查询方,用于根据目标用户的身份标识,生成第一哈希值;生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值;将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值;截取第一哈希值的前n位,得到第二哈希值,其中n是正整数;向被查询方发送查询请求,查询请求中携带第一身份混淆值和第二哈希值;被查询方,用于从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表;生成第二随机数,并对所述第二随机数进行哈希变换得到第二随机哈希值;对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表;对第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值;向查询方返回第二身份混淆值和第二用户数据列表;查询方,还用于将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表,并判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
16.第七方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上任意一种所述的双随机数据混淆查询方法。
17.第八方面,本发明实施例提供了一种计算机设备,其包括:一个或多个处理器;存储装置,用于存储一个或多个程序;当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现如上任意一种所述的双随机数据混淆查询方法。
18.本发明实施例提供的双随机数据混淆查询方法、装置、系统、可读存储介质和计算机设备,具有如下有益效果:通过在查询方提供截取哈希值的前n位得到查询key值的方式,有利于缩小目标用户量。由于md5哈希值有很强的分散性,所以被查询方获得前n位值,并不能推算出目标用户。通过截取前n位哈希值的方式,使在海量数据中查询关联信息变成可能,因为被查信息在哈希后被索引,按前辍可以快速查询到前n位相同的信息。
19.通过同时在查询方以及被查询方生成双随机数据进行数据混淆,查询方加入随机数后,被查询方无法通过枚举来获得被查询方用户信息,被查询方加入随机数后,返回给查询方,查询方一样无法通过枚举来获得返回数据的真实信息,确保了目标用户信息以及用户列表信息在查询方以及被查询方的双向安全。
20.仅通过计算随机混淆值的加法运算,便可以有效隐匿目标用户与被查询数据库的相关信息,能够做到查询方与被查询方均无法获得有效的用户信息,该方法简单高效,计算成本低,运算速度快。
21.通过随访问动作进行随机混淆值计算的方式进行信息混淆,可以实现随着访问动作的开始和结束动态的占用和释放内存,使得该算法轻量化,尤其是同时并行访问大量数据时,能够做到节约算力成本和存储资源。
附图说明
22.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
23.图1是根据本发明一示例性实施例示出的一种双随机数据混淆查询方法的示意性流程图;图2是图1中步骤s4对应操作的优选方式示意性流程图;图3是根据本发明一示例性实施例示出的另一种双随机数据混淆查询方法的示意性流程图;图4是根据本发明一示例性实施例示出的又一种双随机数据混淆查询方法的示意性流程图;图5是根据本发明一示例性实施例示出一种双随机数据混淆查询方法的示意性查询过程图;图6是根据本发明一示例性实施例示出的一种双随机数据混淆查询装置的结构示意图;图7是根据本发明一示例性实施例示出的另一种双随机数据混淆查询装置的结构示意图;图8是根据本发明一示例性实施例示出的一种双随机数据混淆查询系统的结构示意图;图9是根据本发明一示例性实施例示出的计算机可读存储介质的示意性框图;图10是根据本发明一示例性实施例示出的计算机设备的示意性框图。
具体实施方式
24.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
25.为了更好地理解本发明,下面结合图1至图10对本发明实施例提供的一种双随机数据混淆查询方法、装置、系统、可读存储介质和计算机设备进行详细描述。应注意,这些实施例并不是用来限制本发明公开的范围。
26.本发明实施例的技术方案涉及如下三类对象:被查用户(目标用户):指个人或企业等社会实体;查询方:因受理被查用户的某些业务,由于自身数据不完备需要向第三方机构查询用户数据的机构或企业;被查询方:具有某些被查用户的特定数据,向查询方提供被查用户信息的机构或企业。
27.例如,上述三类对象可以包括:被查询用户(或目标用户):个人,例如其向银行申请贷款;
查询方:银行,由于需要确认用户违约风险,所以需要外部数据补充;被查询方:运营商,其向银行提供特定用户的通话及相关画像信息。
28.在本发明实施例中,查询的输入可以包括:查询方通过被查用户的标识信息的哈希值来从被查询方获取数据;查询的输出(被查询方向查询方提供的信息)可以包括:目标用户是否存在,或根据某种特征提取方式的文本指纹信息是否存在,其中,文本指纹是指如抽取高频文本词频生成的指纹等。
29.图1是根据本发明一示例性实施例示出的一种双随机数据混淆查询方法的示意性流程图。如图1所示,该方法具体可以包括:s1:查询方根据目标用户的身份标识,生成第一哈希值。
30.具体的,查询方根据目标用户的身份标识,对应生成第一哈希值,作为查询key值。身份标识例如可以是手机号、护照号、身份证号或多种信息组合的身份编码,其中,身份编码例如可以为对用户的姓名拼音、手机号后预设位数(例如但不限于5位)和身份证号后预设位数(例如但不限于4位)构成的组合信息进行md5哈希变换后,生成的对应编码序列。第一哈希值m是用于标识用户身份的唯一标识的哈希值。相关计算公式如下:key=md5 hash(mobile|idno)。上述公式中,mobile参数表示手机号,idno参数表示身份证号。
31.在本发明实施例中,可以采用md5哈希变换对身份标识(例如手机号或身份证号或身份编码)进行哈希值变换,生成查询key值,从而对作为原始key值的身份标识进行散列与脱敏;md5哈希变换的优点在于:不论输入数据长度,均可以以统一长度输出最终hash值;具有良好的分散性,即两个相近的输入,输出完全无规则可循。
32.s2:查询方生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值。
33.具体的,查询方根据随机数生成算法生成第一随机数,并基于所生成的第一随机数,根据信息摘要算法,例如md5哈希算法,生成第一随机哈希值,其中,随机数生成算法包括但不限于基于系统时间戳(毫秒)为依据来生成第一随机数。
34.s3:查询方将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值。
35.具体的,将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值,其中,第一随机哈希值,第一哈希值以及第一身份混淆值分别可以为32位字符串,32位字符串中的每一位均可以为0-9以及a-z中的任意一个值,例如,将32位字符的每一位作为36进制数处理,即:a(36进制)=10(10进制),b(36进制)=11(10进制),依此类推z(36进制)=35(10进制)。
36.s4:查询方截取所述第一哈希值的前n位,得到第二哈希值,其中n是正整数。
37.在本发明的一个实施例中,如图2所示,步骤s4具体可以包括如下步骤:s41:根据哈希变换对数据的散列形式确定哈希数据取值方式。
38.具体的,根据哈希算法,对输入值进行散列,用于隐藏原始信息。例如,哈希算法可以为md5哈希算法,输入值可以为目标用户的身份标识,例如可以包括但不限于身份证号码、手机号码、身份编码等。可以将输入值散列成一个32位的哈希值,其中32位哈希值的每一位均可为0-9或a-z中的任意一个值,构成一个36进制的32位字符串,例如,将32位字符的每一位作为36进制数处理,即:a(36进制)=10(10进制),b(36进制)=11(10进制),依此类推z(36进制)=35(10进制)。
39.s42:根据哈希数据取值方式以及查询目标数据量确定目标用户的被查询概率。
40.具体的,根据所生成的第一哈希值的每一位的取值方式,确定每一位数据被查中的概率,例如,第一哈希值为36进制取值,每一位数据被查中的概率为r = 1/36,则前n位被查中的概率为rn= (1/36) n

41.根据每次查询时哈希值前n位被查中的概率,确定查询数据量为t时,被查中的概率为r
t = t * rn= t * (1/36) n
。根据上述公式,n越大,结果r
t
越小,t越大,结果r
t
越大。
42.s43:根据被查询概率确定要截取的第一哈希值的前n位,得到第二哈希值。
43.具体的,根据上述公式可知,n的大小与被查询概率的关系为n越大,结果r
t
越小。但是n的取值大小同样受查询方与被查询方的计算成本制约,n越大,查询方与被查询方的计算成本越大。且由于被查数据集的大小同样影响结果集的大小,因此需要双方共同根据被查询数据集的大小,泄露概率的大小以及计算成本,确定n的大小,n 的范围可以为3~12。优选的,n可以为7。
44.在此过程中查询方提供md5的前n位,有利于缩小目标用户量。由于md5有很强的分散性,所以被查询方获得前n位值,并不能推算出目标用户。通过截取前n位哈希值的方式,使在海量数据中查询关联信息变成可能,因为被查信息在哈希后被索引,按前缀可以快速查询到前n位相同的信息。
45.s5:查询方向被查询方发送查询请求,查询请求携带所述第一身份混淆值和所述第二哈希值。
46.s6:被查询方从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表。
47.具体的,被查询方接收到查询方发送的查询请求后,根据所接收的第二哈希值,从预先导入数据的数据库中查询键的前缀为第二哈希值的数据,作为第一用户数据列表。其中,数据库可以为键值(key-value)数据库,其是一种以键值对存储数据的数据库,目标用户的身份标识例如可以为身份编码,查询方以基于身份编码对应的md5哈希值前n位作为查询key值进行查询,被查询方根据接收到的查询key值,在key-value数据库中查询对应于查询key值的其他数据为value。在查询过程中,被查询方将查询到的与查询key值相同的数据列表,作为第一用户数据列表。
48.s7:被查询方生成第二随机数,并对所述第二随机数进行哈希变换得到第二随机哈希值。
49.具体的,在被查询方,根据随机数生成算法生成第二随机数,并基于所生成的第二随机数,根据信息摘要算法,例如md5哈希算法,生成第二随机哈希值,其中,随机数生成算法包括但不限于基于系统时间戳(毫秒)为依据来生成第二随机数。
50.s8:被查询方对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表。
51.具体的,在被查询方,对第一用户数据列表进行哈希变换生成第一用户哈希值列表,其中,第一用户数据列表例如可以包括但不限于身份证号码、手机号码、身份编码等,并将第一用户哈希值列表中的每个值与第二随机哈希值进行加法运算,得到第二用户数据列表。其中,第一用户哈希值列表中的数据以及第二随机哈希值例如可以为32位的36进制数
据值,加法运算可以为36进制加法运算。
52.s9:被查询方对第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值。
53.具体的,被查询方将查询方发出的第一身份混淆值与被查询方生成的第二随机哈希值进行加法运算,得到第二身份混淆值。其中,第一身份混淆值以及第二随机哈希值例如可以为32位36进制数据值,加法运算可以为36进制加法运算。
54.s10:被查询方向查询方返回第二身份混淆值和第二用户数据列表。
55.s11:查询方将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表。
56.具体的,在查询方,将接收到的第二用户数据列表中的每个值分别与第一随机哈希值进行加法运算,得到第三用户数据列表。其中,第二用户数据列表中的数据以及第一随机哈希值例如可以为32位的36进制数据值,加法运算可以为36进制加法运算。
57.s12:查询方判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
58.具体的,在一个可选的实施例中,查询过程如图3所示,查询方预查询目标用户的相关信息,例如是否在名单库中,根据目标用户的身份标识,例如身份编码进行查询。
59.首先,查询方根据目标用户的身份编码,例如输入c6cc7bab30e38a92,其中身份编码为md5(姓名拼音 手机号后5位 身份证号后4位,16)=c6cc7bab30e38a92,即对用户的姓名拼音、手机号后5位和身份证号后4位的信息组合进行16位md5哈希变换生成的对应的身份编码。利用md5哈希算法对身份编码进行哈希变换生成一组32位第一哈希值m1:md5 (c6cc7bab30e38a92,32)=7e30ba421c52a7a84af16382a1bb99c8,即对身份编码进行32位md5哈希。
60.查询方利用随机数生成算法生成第一随机数,并对第一随机数进行哈希变换,生成一组32位的第一随机哈希值r1:md5(1664435821665,32) = 20f793824db48311ddcb6bcee2a1d6db,其中1664435821665为根据系统时间戳生成的随机数。将m1与r1进行加法运算得到第一身份混淆值x1,例如x1=m1 r1=7e30ba421c52a7a84af16382a1bb99c8 20f793824db48311ddcb6bcee2a1d6db。同时截取第一哈希值m1前n位,例如n=7,得到第二哈希值m2:7e30ba4,作为查询key值。当查询方向被查询方发出查询请求时,同时携带第一身份混淆值x1以及第二哈希值m2。
61.其次,被查询方接收到查询方的查询请求时,预先导入数据库中的数据,例如可以为键值数据库,并对数据库中所有名单用户身份编码做md5哈希,并存储。被查询方根据接收到的第二哈希值m2作为查询key值,从键值数据库中查询出与m2相同查询key值的数据列表,作为第一用户数据列表l1,例如,从键值数据库中查出前7位,m2=7e30ba4的数据作为第一用户数据列表l1。被查询方利用随机数生成算法生成第二随机数,并对第二随机数进行哈希变换,生成一组32位的第二随机哈希值r2:md5 (1664436409542,32)=63494e447660fd9eed2d7cc60be4fb63,其中1664436409542为根据系统时间戳生成的随机数。随后被查询方对第一用户数据列表l1中的数据进行哈希变换,生成第一用户哈希值列表,并将第一用户哈希值列表中的每个值与第二随机哈希值r2进行加法运算,得到第二用户数据列表l2。
62.被查询方将接收的第一身份混淆值x1与第二随机哈希值r2进行加法运算,得到第二身份混淆值x2,例如:x2=x1 r2=x1 63494e447660fd9eed2d7cc60be4fb63。其中,上述数据均可以为36进制数据,加法运算可以为36进制加法运算。被查询方将计算得到的第二身份混淆值x2与第二用户数据列表l2作为返回值,返回给查询方。
63.查询方将接收到的第二用户数据列表l2中的每个值分别与第一随机哈希值r1进行加法运算,得到第三用户数据列表l3。
64.最后,查询方通过判断第二身份混淆值x2是否存在于第三用户数据列表l3,来确定目标用户是否在被查询方的数据库中。
65.图4是根据本发明一示例性实施例示出的又一种双随机数据混淆查询方法的示意性流程图。如图4所示,该方法具体可以包括:步骤s101:根据目标用户的身份标识,生成第一哈希值。
66.具体的,目标用户的身份标识可以包括用户的移动通信终端号码、身份证号、护照号等身份证明标识中的任意一个或者任意多个构成的组合。本步骤可基于信息摘要算法生成第一哈希值。信息摘要算法包括但不限于md5哈希算法。
67.步骤s102:生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值。
68.具体的,查询方根据随机数生成算法生成第一随机数,并基于所生成的第一随机数,根据信息摘要算法,例如md5哈希算法,生成第一随机哈希值。
69.步骤s103:将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值。
70.具体的,将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值,其中,第一随机哈希值,第一哈希值以及第一身份混淆值分别可以为32位字符串,32位字符串中的每一位均可以为0-9以及a-z中的任意一个值,例如,将32位字符的每一位作为36进制数处理,即:a(36进制)=10(10进制),b(36进制)=11(10进制),依此类推z(36进制)=35(10进制)。
71.步骤s104:截取第一哈希值的前n位,得到第二哈希值,其中n是正整数。
72.在本发明的一个实施例中,步骤s104具体可以包括如下步骤:根据哈希变换对数据的散列形式确定哈希数据取值方式。
73.具体的,根据哈希算法,对输入值进行散列,用于隐藏原始信息。例如,哈希算法可以为md5哈希算法,输入值可以为目标用户的身份标识,例如可以包括但不限于身份证号码、手机号码、身份编码等。可以将输入值散列成一个32位的哈希值,其中32位哈希值的每一位均可为0-9或a-z中的任意一值,构成一个36进制的32位字符串,例如,将32位字符的每一位作为36进制数处理,即:a(36进制)=10(10进制),b(36进制)=11(10进制),依此类推z(36进制)=35(10进制)。
74.根据哈希数据取值方式以及查询目标数据量确定目标用户的被查询概率。
75.具体的,根据所生成的第一哈希值的每一位的取值方式,确定每一位数据被查中的概率,例如,第一哈希值为36进制取值,每一位数据被查中的概率为r = 1/36,则前n位被查中的概率为rn= (1/36) n

76.根据每次查询时哈希值前n位被查中的概率,确定查询数据量为t时,被查中的概率为r
t = t * rn= t * (1/36) n
。根据上述公式,n越大,结果r
t
越小,t越大,结果r
t
越大。
77.根据被查询概率确定要截取的第一哈希值的前n位,得到第二哈希值。
78.具体的,根据上述公式可知,n的大小与被查询概率的关系为n越大,结果r
t
越小。但是n的取值大小同样受查询方与被查询方的计算成本制约,即n越大,查询方与被查询方的计算成本越大。且由于被查数据集的大小同样影响结果集的大小,因此需要双方共同根据被查询数据集的大小,泄露概率的大小以及计算成本,确定n的大小,n 的范围可以为3~12,优选的,n可以为7。
79.在此过程中查询方提供md5哈希值的前n位,有利于缩小目标用户量。由于md5哈希值有很强的分散性,所以被查询方获得前n位值,并不能推算出目标用户。通过截取前n位哈希值的方式,使在海量数据中查询关联信息变成可能,因为被查信息在哈希后被索引,按前辍可以快速查询到前n位相同的信息。
80.步骤s105:向被查询方发送查询请求,查询请求携带第一身份混淆值和第二哈希值。
81.步骤s106:接收被查询方返回的第二身份混淆值和第二用户数据列表;其中,第二身份混淆值是由被查询方对所述第一身份混淆值与第二随机哈希值进行加法运算得到的;第二随机哈希值是由被查询方生成第二随机数,并对第二随机数进行哈希变换得到的;第二用户数据列表是由被查询方对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算得到的;第一用户数据列表是指被查询方从数据库中获取键的前缀为第二哈希值的数据得到的。
82.步骤s107:将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表。
83.步骤s108:判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
84.查询的最终结论为:目标用户在被查询方是否存在;在此过程中被查询方无法知道查询方目标用户是谁,同时查询方也无法知道返回的其他用户是谁。
85.图5是根据本发明一示例性实施例示出一种双随机数据混淆查询方法的示意性查询过程图。如图5所示,该方法具体可以包括:s201:接收查询方发送的查询请求,查询请求中携带第一身份混淆值和第二哈希值;其中,第一身份混淆值是由查询方对第一随机哈希值与第一哈希值进行加法运算得到的;第一随机哈希值是由查询方生成第一随机数,并对第一随机数进行哈希变换得到的;第一哈希值是由查询方对目标用户的身份标识进行哈希变换得到的;第二哈希值是由查询方截取第一哈希值的前n位得到的,其中n是正整数。
86.s202:从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表。
87.具体的,在数据准备阶段,被查询方需要先将数据导入至数据库,并从数据库中查询键的前缀为第二哈希值的第一用户数据列表。在一个实施例中,例如数据库可以为键值(key-value)数据库,目标用户的身份标识例如可以为身份编码,查询方以基于身份编码对应的md5哈希值前n位作为查询key值进行查询,被查询方根据接收到的查询key值,在key-value数据库中查询对应于查询key值的其他数据为value。在查询过程中,被查询方将查询到的与查询key值相同的数据列表,作为第一用户数据列表。
88.s203:生成第二随机数,并对所述第二随机数进行哈希变换得到第二随机哈希值。
89.具体的,根据随机数生成算法生成第二随机数,并基于所生成的第二随机数,根据信息摘要算法,例如md5哈希算法,生成第二随机哈希值,其中,随机数生成算法包括但不限于基于系统时间戳(毫秒)为依据来生成第二随机数。
90.s204:对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表。
91.具体的,对第一用户数据列表进行哈希变换生成第一用户哈希值列表,其中,第一用户数据列表例如可以包括但不限于身份证号码、手机号码、身份编码等,并将第一用户哈希值列表中的每个值与第二随机哈希值进行加法运算,得到第二用户数据列表。其中,第一用户哈希值列表中的数据以及第二随机哈希值例如可以为32位的36进制数据值,加法运算可以为36进制加法运算。
92.s205:对第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值。
93.具体的,查询方发出查询请求时,同时携带第一身份混淆值,被查询方将第一身份混淆值与被查询方生成的第二随机哈希值进行加法运算,得到第二身份混淆值。其中,第一身份混淆值以及第二随机哈希值例如可以为32位36进制数据值,加法运算可以为36进制加法运算。
94.s206:向查询方返回第二身份混淆值和第二用户数据列表。
95.根据本发明实施例的双随机数据混淆查询方法,通过同时在查询方以及被查询方生成双随机数据进行数据混淆,由于对被查询的目标用户加了两个随机数,同时返回的用户列表也加了两个随机数,所以可以判断被查询用户是否在返回的用户列表中存在。通过查询方加入随机数后,被查询方无法通过枚举来获得被查询方用户信息,被查询方加入随机数后,返回给查询方,查询方一样无法通过枚举来获得返回数据的真实信息,确保了目标用户信息以及用户列表信息在查询方以及被查询方的双向安全。
96.上文描述了根据本发明实施例的双随机数据混淆查询方法,下面分别结合图6至图10描述根据本发明实施例的双随机数据混淆查询装置、系统及计算机设备。
97.图6是根据本发明一示例性实施例示出的一种双随机数据混淆查询装置的结构示意图,如图6所示,双随机数据混淆查询装置300包括:哈希模块301,用于根据目标用户的身份标识,生成第一哈希值。
98.第一随机哈希值确定模块302,用于生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值。
99.第一随机混淆模块303,用于根据第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值。
100.截取模块304,用于截取第一哈希值的前n位,得到第二哈希值,其中n是正整数。
101.第一发送模块305,用于向被查询方发送查询请求,查询请求携带第一身份混淆值和第二哈希值。
102.第一接收模块306,用于接收被查询方返回的第二身份混淆值和第二用户数据列表。其中,第二身份混淆值是由被查询方对第一身份混淆值与第二随机哈希值进行加法运算得到的;第二随机哈希值是由被查询方生成第二随机数,并对第二随机数进行哈希变换得到的;第二用户数据列表是由被查询方对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算得到
的;第一用户数据列表是指被查询方从数据库中获取键的前缀为第二哈希值的数据得到的;第三用户数据列表确定模块307,用于将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表。
103.用户确定模块308,用于判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
104.图7是根据本发明一示例性实施例示出的另一种双随机数据混淆查询装置的结构示意图,如图7所示,双随机数据混淆查询装置400包括:第二接收模块401,用于接收查询方发送的查询请求,查询请求中携带第一身份混淆值和第二哈希值;其中,第一身份混淆值是由查询方对第一随机哈希值与第一哈希值进行加法运算得到的;第一随机哈希值是由查询方生成第一随机数,并对第一随机数进行哈希变换所得;第一哈希值是由查询方对目标用户的身份标识进行哈希变换得到的;第二哈希值是由查询方截取第一哈希值的前n位得到的,其中n是正整数。
105.数据获取模块402,用于从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表。
106.第二随机哈希值确定模块403,用于生成第二随机哈希值,第二随机哈希值是由被查询方生成第二随机数,并对第二随机数进行哈希变换得到的。
107.第二用户数据列表确定模块404,用于对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表。
108.第二随机混淆模块405,用于根据第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值。
109.第二发送模块406,用于向查询方返回第二身份混淆值和第二用户数据列表。
110.图8是根据本发明一示例性实施例示出的一种双随机数据混淆查询系统的结构示意图,如图8所示,双随机数据混淆查询系统500包括:查询方501,用于根据目标用户的身份标识,生成第一哈希值;生成第一随机数,并对所述第一随机数进行哈希变换得到第一随机哈希值;将第一随机哈希值与第一哈希值进行加法运算,得到第一身份混淆值;截取第一哈希值的前n位,得到第二哈希值,其中n是正整数;向被查询方发送查询请求,查询请求中携带第一身份混淆值和第二哈希值;被查询方502,用于从数据库中获取键的前缀为第二哈希值的数据,得到第一用户数据列表;生成第二随机数,并对所述第二随机数进行哈希变换得到第二随机哈希值;对第一用户数据列表进行哈希变换生成第一用户哈希值列表,并将第一用户哈希值列表中的数据分别与第二随机哈希值进行加法运算,得到第二用户数据列表;对第一身份混淆值与第二随机哈希值进行加法运算,得到第二身份混淆值;向查询方返回第二身份混淆值和第二用户数据列表;查询方501,还用于将第二用户数据列表中的数据分别与第一随机哈希值进行加法运算,得到第三用户数据列表,并判断第二身份混淆值在第三用户数据列表中是否存在,若存在,则确定目标用户在被查询方中存在。
111.根据本发明实施例的双随机数据混淆查询方法、装置和系统,通过采用生成双随
机数据的方式,分别在查询方以及被查询方生成随机数据并进行数据混淆,能够有效的保护目标用户的数据以及被查询方内部数据库中的数据不被外界获取,使得无论是查询方还是被查询方均无法获得额外的隐私数据,有效的保护了用户的信息不被泄露。同时,相比于常见的加密算法,本发明实施例所采用的随机数生成的方式,算法更简单且高效。
112.本发明实施例还提供了一种计算机可读存储介质600,如图9所示,计算机可读存储介质600内存储有计算机程序601,计算机程序601被处理器执行时实现上述双随机数据混淆查询方法的各步骤。
113.所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
114.图10是根据本发明一示例性实施例示出的计算机设备的示意性框图。如图10所示,计算机设备1000包括输入设备1001、输入接口1002、中央处理器1003、存储器1004、输出接口1005、以及输出设备1006。其中,输入接口1002、中央处理器1003、存储器1004、以及输出接口1005通过总线1007相互连接,输入设备1001和输出设备1006分别通过输入接口1002和输出接口1005与总线1007连接,进而与计算机设备1000的其他组件连接。
115.具体地,输入设备1001接收来自外部的输入信息,并通过输入接口1002将输入信息传送到中央处理器1003;中央处理器1003基于存储器1004中存储的计算机可执行指令对输入信息进行处理以生成输出信息,将输出信息临时或者永久地存储在存储器1004中,然后通过输出接口1005将输出信息传送到输出设备1006;输出设备1006将输出信息输出到计算机设备1000的外部供用户使用。
116.在一个实施例中,图10所示的计算机设备1000可以被实现为一种双随机数据混淆查询装置,该双随机数据混淆查询装置可以包括:存储器,被配置为存储程序;处理器,被配置为运行存储器中存储的程序,以执行上述实施例描述的双随机数据混淆查询方法。
117.根据本发明的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以从网络上被下载和安装,和/或从可拆卸存储介质被安装。
118.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。计算机程序产品包括一个或多个计算机指令,当其在计算机上运行时,使得计算机执行上述各个实施例中
描述的方法。在计算机上加载和执行计算机程序指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘)等。
119.以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
120.最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使对应技术方案的本质脱离本发明各实施例技术方案的范围。
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献