可左右滑动选省市

节点关系的数据生成方法和装置、查询方法、装置及系统

更新时间:2024-07-01
节点关系的数据生成方法和装置、查询方法、装置及系统 专利申请类型:发明专利;
地区:山东-青岛;
源自:青岛高价值专利检索信息库;

专利名称:节点关系的数据生成方法和装置、查询方法、装置及系统

专利类型:发明专利

专利申请号:CN202111500359.1

专利申请(专利权)人:青岛大学
权利人地址:山东省青岛市崂山区香港东路7号

专利发明(设计)人:于佳,宋芸娇,郝蓉

专利摘要:本发明公开了一种节点关系的数据生成方法,包括根据图数据中各个节点之间的节点关系信息获得加密二跳索引表;根据加密二跳索引表查询获得第一节点的可到达节点集合与第二节点的被到达节点集合的交集集合;根据第一节点和第二节点之间的节点关系,设定标识符;根据交集集合中的元素和标识符生成第一节点和第二节点对应的验证码;将验证码和加密二跳索引表发送至云端服务器,以便客户端通过云服务器中验证码和加密二跳索引表确定生成验证码的标识符。本申请中简化了客户端获得节点关系的难度,为客户端获得节点关系的信息提供便利。本申请还提供了一种节点关系的数据生成装置、一种节点关系的数据查询方法、装置以及系统,具有上述有益效果。

主权利要求:
1.一种节点关系的数据生成方法,其特征在于,包括:
根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对所述二跳索引表进行加密获得加密二跳索引表;
在所述加密二跳索引表中加密后的各个所述节点中遍历选取第一节点和第二节点,并根据所述加密二跳索引表查询获得所述第一节点的可到达节点集合与所述第二节点的被到达节点集合的交集集合;
根据所述第一节点和所述第二节点之间的节点关系,设定标识符;
根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码;
将所述验证码和所述加密二跳索引表发送至云端服务器,以便客户端通过所述云端服务器中所述验证码和所述加密二跳索引表确定生成所述验证码的标识符;
对所述二跳索引表进行加密获得加密二跳索引表,包括:
向所述二跳索引表中添加和所述节点的符号类型相同且不带标识的虚拟节点,形成一次加密二跳索引表;
对所述一次加密二跳索引表进行二次加密获得所述加密二跳索引表;
对所述一次加密二跳索引表进行二次加密获得所述加密二跳索引表,包括:对所述一次加密二跳索引表的第一列数据通过哈希函数进行加密,获得所述加密二跳索引表的第一列加密数据;
对所述一次加密二跳索引表的第二列数据和第三列数据通过伪随机置换函数进行加密,获得所述加密二跳索引表的第二列加密数据和第三列加密数据;
其中,所述一次加密二跳索引表的第一列数据为各个所述节点的节点编号,所述一次加密二跳索引表的第二列数据分别为各个所述节点对应的可被到达节点集合,所述一次加密二跳索引表的第三列数据分别为各个所述节点对应的可到达节点集合。
2.如权利要求1所述的节点关系的数据生成方法,其特征在于,根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码,包括:利用Mac函数和密钥数据对所述交集集合中的元素和所述标识符进行运算获得所述验证码。
3.如权利要求1所述的节点关系的数据生成方法,其特征在于,根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码之后,还包括:根据每两个所述节点的所述交集集合对应的所述验证码构建验证码矩阵;
相应地,将所述验证码和所述加密二跳索引表发送至云端服务器,包括:将所述验证码矩阵和所述加密二跳索引表发送至所述云端服务器。
4.一种节点关系的数据生成装置,其特征在于,包括:
索引表模块,用于根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对所述二跳索引表进行加密获得加密二跳索引表;
集合查询模块,用于在所述加密二跳索引表中加密后的各个所述节点中遍历选取第一节点和第二节点,并根据所述加密二跳索引表查询获得所述第一节点的可到达节点集合与所述第二节点的被到达节点集合的交集集合;
标识符模块,用于根据所述第一节点和所述第二节点之间的到达关系,设定标识符;
验证码模块,用于根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码;
数据上传模块,用于将所述验证码和所述加密二跳索引表发送至云端服务器,以便客户端通过所述云端服务器中所述验证码和所述加密二跳索引表确定生成所述验证码的标识符;
所述索引表模块具体用于向所述二跳索引表中添加和所述节点的符号类型相同且不带标识的虚拟节点,形成一次加密二跳索引表;对所述一次加密二跳索引表进行二次加密获得所述加密二跳索引表;
所述索引表模块具体用于对所述一次加密二跳索引表的第一列数据通过哈希函数进行加密,获得所述加密二跳索引表的第一列加密数据;对所述一次加密二跳索引表的第二列数据和第三列数据通过伪随机置换函数进行加密,获得所述加密二跳索引表的第二列加密数据和第三列加密数据;其中,所述一次加密二跳索引表的第一列数据为各个所述节点的节点编号,所述一次加密二跳索引表的第二列数据分别为各个所述节点对应的可被到达节点集合,所述一次加密二跳索引表的第三列数据分别为各个所述节点对应的可到达节点集合。
5.一种节点关系的数据查询方法,其特征在于,应用于如权利要求1至3任一项所述的节点关系的数据生成方法生成的验证码和所述加密二跳索引表,所述节点关系的数据查询方法包括:向云端服务器发送节点关系查询指令,其中,所述节点关查询指令中包含待查询节点关系的第一待查节点和第二待查节点的节点编号;
接收所述云端服务器根据所述节点编号在所述加密二跳索引表中分别查询所述第一待查节点的可到达节点集合和所述第二待查节点的被到达节点集合,以及接收所述云端服务器查询获得的所述第一待查节点和所述第二待查节点对应的验证码;
对所述第一待查节点的可到达节点集合与所述第二待查节点的可被到达节点集合取交集,获得待查交集集合;
根据所述待查交集集合和所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,以根据所述标识符确定所述第一待查节点和所述第二待查节点之间的节点关系。
6.如权利要求5所述的节点关系的数据查询方法,其特征在于,根据所述待查交集集合和所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,包括:设定所述第一待查节点和所述第二待查节点之间的标识符为可到达标识符;
利用所述可到达标识符和所述待查交集集合生成第一验证码,并对比所述第一验证码和所述验证码;
若所述第一验证码和所述验证码一致,则所述第一待查节点和所述第二待查节点之间的标识符为可到达;
若所述第一验证码和所述验证码不一致,则设定所述第一待查节点和所述第二待查节点之间的标识符为不可到达标识符;
利用所述不可到达标识符和所述待查交集集合生成第二验证码,并对比所述第二验证码和所述验证码,若所述第二验证码和所述验证码一致,则所述第一待查节点和所述第二待查节点之间的标识符为不可到达。
7.一种节点关系的数据查询装置,其特征在于,应用于如权利要求1至3任一项所述的节点关系的数据生成方法生成的验证码和所述加密二跳索引表,所述节点关系的数据查询装置包括:指令发送模块,用于向云端服务器发送节点关系查询指令,其中,所述节点关查询指令中包含待查询节点关系的第一待查节点和第二待查节点的节点编号;
数据接收模块,用于接收所述云端服务器根据所述节点编号在所述加密二跳索引表中分别查询所述第一待查节点的可到达节点集合和所述第二待查节点的被到达节点集合,以及接收所述云端服务器查询获得的所述第一待查节点和所述第二待查节点对应的验证码;
取交集模块,用于对所述第一待查节点的可到达节点集合与所述第二待查节点的可被到达节点集合取交集,获得待查交集集合;
节点关系确定模块,用于根据所述待查交集集合所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,以根据所述标识符确定所述第一待查节点和所述第二待查节点之间的节点关系。
8.一种节点关系的查询系统,其特征在于,包括服务端、客户端以及云端服务器;
所述服务端用于执行实现如权利要求1至3任一项所述的节点关系的数据生成方法的步骤,以生成各个节点对应的验证码和加密二跳索引表;
所述云端服务器用于存储所述验证码和所述加密二跳索引表;
所述客户端用于执行实现如权利要求5至6任一项所述的节点关系的数据查询方法的步骤。 说明书 : 节点关系的数据生成方法和装置、查询方法、装置及系统技术领域[0001] 本发明涉及图数据技术领域,特别是涉及一种节点关系的数据生成方法、装置、一种节点关系的数据查询方法、装置以及系统。背景技术[0002] 图数据在很多领域都有着广泛的应用,如社交网络、生物网络、地理导航和道路规划等领域。图数据的本质是表示各类实体以及实体之间关系的网络图;以微信社交网络为例,可以用图数据表示各个注册用户之间是否互为好友、是否为对方开放朋友圈、是否关注同一公众号等信息。[0003] 随着图数据的规模越来越大,图数据拥有者需要花费较大的代价去储存和查询图数据。因此,图数据拥有者通常将图数据的相关信息外包给云端服务器,让云服务器代替图数据拥有者去存储和查询图数据。虽然云服务器能够给数据的存储和查询带来了很大的便利,但为了保证图数据的安全性,往往需要对图数据的相关信息进行加密,使得该图数据信息对云服务器不可见,仅仅只能为客户端查询加密后的数据,客户端获得加密后的数据之后,需要自行解密才能够获得最终的图数据信息,整个过程较为繁琐,在一定程度上增大了用户获取实体之间关系信息的难度。发明内容[0004] 本发明的目的是提供一种节点关系的数据生成方法、装置、一种节点关系的数据查询方法、装置以及系统,简化了图数据中节点关系查询的难度。[0005] 为解决上述技术问题,本发明提供一种节点关系的数据生成方法,包括:[0006] 根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对所述二跳索引表进行加密获得加密二跳索引表;[0007] 在所述加密二跳索引表中加密后的各个所述节点中遍历选取第一节点和第二节点,并根据所述加密二跳索引表查询获得所述第一节点的可到达节点集合与所述第二节点的被到达节点集合的交集集合;[0008] 根据所述第一节点和所述第二节点之间的节点关系,设定标识符;[0009] 根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码;[0010] 将所述验证码和所述加密二跳索引表发送至云端服务器,以便客户端通过所述云服务器中所述验证码和所述加密二跳索引表确定生成所述验证码的标识符。[0011] 可选地,根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码,包括:[0012] 利用Mac函数和密钥数据对所述交集集合中的元素和所述标识符进行运算获得所述验证码。[0013] 可选地,根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码之后,还包括:[0014] 根据每两个所述节点的所述交集集合对应的所述验证码构建验证码矩阵;[0015] 相应地,将所述验证码和所述加密二跳索引表发送至云端服务器,包括:[0016] 将所述验证码矩阵和所述加密二跳索引表发送至所述云端服务器。[0017] 可选地,对所述二跳索引表进行加密获得加密二跳索引表,包括:[0018] 向所述二跳索引表中添加和所述节点的符号类型相同且不带标识的虚拟节点,形成一次加密二跳索引表;[0019] 对所述一次加密二跳索引表进行二次加密获得所述加密二跳索引表。[0020] 可选地,对所述一次加密二跳索引表进行二次加密获得所述加密二跳索引表,包括:[0021] 对所述一次加密二跳索引表的第一列数据通过哈希函数进行加密,获得所述加密二跳索引表的第一列加密数据;[0022] 对所述一次加密二跳索引表的第二列数据和第三列数据通过伪随机置换函数进行加密,获得所述加密二跳索引表的第二列加密数据和第三列加密数据;[0023] 其中,所述一次加密二跳索引表的第一列数据为各个所述节点的节点编号,所述一次加密二跳索引表的第二列数据分别为各个所述节点对应的可被到达节点集合,所述一次加密二跳索引表的第三列数据分别为各个所述节点对应的可到达节点集合。[0024] 一种节点关系的数据生成装置,包括:[0025] 索引表模块,用于根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对所述二跳索引表进行加密获得加密二跳索引表;[0026] 集合查询模块,用于在所述加密二跳索引表中加密后的各个所述节点中遍历选取第一节点和第二节点,并根据所述加密二跳索引表查询获得所述第一节点的可到达节点集合与所述第二节点的被到达节点集合的交集集合;[0027] 标识符模块,用于根据所述第一节点和所述第二节点之间的到达关系,设定标识符;[0028] 验证码模块,用于根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码;[0029] 数据上传模块,用于将所述验证码和所述加密二跳索引表发送至云端服务器,以便客户端通过所述云服务器中所述验证码和所述加密二跳索引表确定生成所述验证码的标识符。[0030] 一种节点关系的数据查询方法,应用于如上任一项所述的节点关系的数据生成方法生成的验证码和所述加密二跳索引表,所述节点关系的数据查询方法包括:[0031] 向云端服务器发送节点关系查询指令,其中,所述节点关查询指令中包含待查询节点关系的第一待查节点和第二待查节点的节点编号;[0032] 接收所述云端服务器根据所述节点编号在所述加密二跳索引表中分别查询所述第一待查节点的可到达节点集合和所述第二待查节点的被到达节点集合,以及接收所述云端服务器查询获得的所述第一待查节点和所述第二待查节点对应的验证码;[0033] 对所述第一待查节点的可到达节点集合与所述第二待查节点的可被到达节点集合取交集,获得待查交集集合;[0034] 根据所述待查交集集合和所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,以根据所述标识符确定所述第一待查节点和所述第二待查节点之间的节点关系。[0035] 可选地,根据所述待查交集集合和所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,包括:[0036] 设定所述第一待查节点和所述第二待查节点之间的标识符为可到达标识符;[0037] 利用所述可到达标识符和所述待查交集集合生成第一验证码,并对比所述第一验证码和所述验证码;[0038] 若所述第一验证码和所述验证码一致,则所述第一待查节点和所述第二待查节点之间的标识符为可到达;[0039] 若所述第一验证码和所述验证码不一致,则设定所述第一待查节点和所述第二待查节点之间的标识符为不可到达标识符;[0040] 利用所述不可到达标识符和所述待查交集集合生成第二验证码,并对比所述第二验证码和所述验证码,若所述第二验证码和所述验证码一致,则所述第一待查节点和所述第二待查节点之间的标识符为不可到达。[0041] 一种节点关系的数据查询装置,应用于如上任一项所述的节点关系的数据生成方法生成的验证码和所述加密二跳索引表,所述节点关系的数据查询装置包括:[0042] 指令发送模块,用于向云端服务器发送节点关系查询指令,其中,所述节点关查询指令中包含待查询节点关系的第一待查节点和第二待查节点的节点编号;[0043] 数据接收模块,用于接收所述云端服务器根据所述节点编号在所述加密二跳索引表中分别查询所述第一待查节点的可到达节点集合和所述第二待查节点的被到达节点集合,以及接收所述云端服务器查询获得的所述第一待查节点和所述第二待查节点对应的验证码;[0044] 取交集模块,用于对所述第一待查节点的可到达节点集合与所述第二待查节点的可被到达节点集合取交集,获得待查交集集合;[0045] 节点关系确定模块,用于根据所述待查交集集合所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,以根据所述标识符确定所述第一待查节点和所述第二待查节点之间的节点关系。[0046] 一种节点关系的查询系统,包括服务端、客户端以及云端服务器;[0047] 所述服务端用于执行实现如上任一项所述的节点关系的数据生成方法的步骤,以生成各个节点对应的验证码和加密二跳索引表;[0048] 所述云端服务器用于存储所述验证码和所述加密二跳索引表;[0049] 所述客户端用于执行实现如上任一项所述的节点关系的数据查询方法的步骤。[0050] 本发明所提供的一种节点关系的数据生成方法,包括根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对二跳索引表进行加密获得加密二跳索引表;在各个节点中遍历选取第一节点和第二节点,并根据加密二跳索引表查询获得第一节点的可到达节点集合与第二节点的被到达节点集合的交集集合;根据第一节点和第二节点之间的节点关系,设定标识符;根据交集集合中的元素和标识符生成第一节点和第二节点对应的验证码;将验证码和加密二跳索引表发送至云端服务器,以便客户端通过云服务器中验证码和加密二跳索引表确定生成验证码的标识符。[0051] 本申请中先将根据图数据中各个节点关系信息生成的二跳索引表进行加密之后获得的加密二跳索引表;并且依据加密后的两个节点之间的交集集合中的元素和表征两个节点之间节点关系的标识位生成验证码,将该加密二跳索引表和验证码全部存储于云端;显然,后续客户端如果需要获得两个节点之间的节点关系,只需要通过云端服务器在加密二跳索引表中查询获得两个节点对应的交集集合和对应的验证码,因为该验证码是交集集合和两个节点的标识符生成的,显然客户端在获得验证码和交集集合的基础上,即可解析出标识符,从而获得两个节点之间的节点关系,在整个过程中无需对加密二跳索引表中的数据进行解密,既保证了加密二跳索引表存储于云端服务器中的安全性,又简化了客户端获得节点关系的难度,为客户端获得节点关系的信息提供便利。[0052] 本申请还提供了一种节点关系的数据生成装置、一种节点关系的数据查询方法、装置以及系统,具有上述有益效果。附图说明[0053] 为了更清楚的说明本发明实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。[0054] 图1为一种图数据的示意图;[0055] 图2为本申请实施例提供的一种节点关系的数据生成方法的流程示意图;[0056] 图3为本申请实施例提供的一种节点关系的查询方法的流程示意图;[0057] 图4为本发明实施例提供的节点关系的数据生成装置的结构框图;[0058] 图5为本发明实施例提供的节点关系的数据查询装置的结构框图。具体实施方式[0059] 为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。[0060] 参照图1和表1,图1为一种图数据的示意图,图1为基于图1生成的二跳引索图。[0061] 表1:[0062]V Lin(V) Lou(V)0 0 0,1,2,3,5,61 1 1,2,3,5,62 2 2,3,5,63 3 3,44 0,1,2,4 45 4,5 5,66 4,6 6[0063] 图1和表1中包含有节点编号为0至6等7个节点,且用带箭头的曲线示意各个节点的可到达信息。可以理解的是,本申请中的可到达可以理解为存在某些关联性;例如在微博网页中,可以表示一个用户是否关注另一用户,如果一个用户A关注了另一用户B,则用户A可到达B;还例如在轨道交通系统中,开通了一个站点C到另一个站点D的运行车辆,则表示站点C可到达站点D;如此类似还存在各种不同的关联性,在此不一一列举。[0064] 图数据的拥有者为了便于使用者对图数据的查询和应用,可以将图数据外包给云端服务器;但是为了避免数据被泄露,需要将图数据转换成二跳引索表之后再进行加密处理;对二跳索引表的加密主要包括两步加密,第一步是先对二跳索引表中添加虚拟节点,使得基于添加虚拟节点之后的二跳索引表无法直接解析出各个节点之间真实的节点关系,在此基础上进一步的利用加密算法对整个二跳索引表进行加密。当客户端需要查询获取节点关系时,先要通过云端服务器获得二跳索引表中加密后的节点数据,再进行解密运算,之后去除解密运算获得的数据中的虚拟节点,最后解析出节点关系的信息。由此可见整个过程繁琐而复杂,在一定程度上增加了客户端的运算量。[0065] 为此,本申请中提供了一种能够简化客户端获得节点关系过程的技术方案。[0066] 参照图2,图2为本申请实施例提供的一种节点关系的数据生成方法的流程示意图,该方法可以包括:[0067] S11:根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对二跳索引表进行加密获得加密二跳索引表。[0068] 在基于图数据中各个节点之间的节点关系生成的二跳索引表可以参照图1和表1;在表1所示的二跳索引表表中,第一列数据为各个节点的节点编号。表1中是以数字0、1、2、3、4、5、6作为7个节点的节点编号,在实际应用中也并不排除采用A、B、C、D等形式的编号,对此,本实施例中并不具体限制。[0069] 对于二跳索引表的第二列数据为每个节点对应的可被到达节点集合,第三列数据为每个节点对应的可到达节点集合。以节点0为例,除了节点0以外,其他节点均不能到达节点0,也即是说只有其自身可以到达其本身节点,而对于节点0,1,2,3,5,6,都是节点0直接或间接可以到达的节点。由此可见对于第二列数据而言,其分别其他节点分别可直接或间接到达某一个节点的集合。而对于第三列数据而言,则是每个节点分别可直接或间接到达其他节点的集合。[0070] 另外,为了尽可能的简化二跳索引表,表1所示的二跳索引表是被修剪过的,例如以表1中的节点4为例,节点3应当也属于节点4的被到达节点的集合中,但是在表1中并未直接体现这一关系,但实际上基于节点3的可到达点集合中同样可以推断出节点3可到达节点4,由此可见,被修剪过的二跳索引表修剪掉了部分重复的信息,使得表格简化但仍然能够完成反映图1中图数据的信息。[0071] 基于上述对二条索引表的介绍,下面进一步地说明对二跳索引表的加密问题。[0072] 目前常规的对二跳索引表进行加密需要在二跳索引表中添加虚拟节点,使得添加虚拟节点后无法通过二跳索引表直接推断出各个节点之间的节点关系。参照表2,表2为对表1进行添加虚拟节点加密后的二跳索引表。[0073] 表2:[0074] V Lin(V) Lou(V)0 0,7,8,9 0,1,2,3,5,6,7,81 1,7,8,10 1,2,3,5,6,7,8,92 2,7,8,11 2,3,5,6,7,8,9,103 3,7,8,12 3,4,7,8,9,10,114 0,1,2,4,9,10,13 4,7,8,9,10,11,125 4,5,7,8,14 5,6,7,8,9,10,11,12,136 4,6,7,8 6,7,8,9,10,11,12,13,14[0075] 对照表1和表2可知,表2中节点7至节点14均是属于虚拟节点,一般情况下,为了使客户端在解析获得添加虚拟节点之后的二跳索引表的数据信息后,能够解析出两个节点之间的节点关系,需要将表2中所示的虚拟节点设定一定的标识。[0076] 但因为本实施例中后续需要设定表示节点之间关系的标识符,客户端无需基于查询获得的二跳引索表对节点之间的关系进行推导,也就无需对二跳索引表中的虚拟节点进行标识,虚拟节点直接采用和真实实体节点完全相同的类型和格式即可,这在一定程度上既减少了二跳索引表的数据量,又提升了虚拟节点对二跳索引表的加密的安全性。[0077] 另外,在对表1中添加虚拟节点形成表2的过程中,可以以任意两个节点的可到达节点集合与可被到达节点集合的交集集合中的元素数量均相等为原则进行添加。[0078] 例如,任意选取节点X和节点Y,其中X=0,1,2,3,4,5,6;Y=0,1,2,3,4,5,6;对X的可被到达节点集合Lin(X)与Y可到达节点集合Lout(Y)取交集获得交集集合,轮询选取所有节点,最终可以确定一组元素数量最多的一组交集集合,以表1为例,Lin(4)和Lout(0)取交集获得的交集集合中元素数量最大为3。由此,可以开始对各个节点对应的Lin(V)集合以及Lout(V)集合添加虚拟节点,使得任意节点X和节点Y对应的交集集合中的元素数量均为3。[0079] 可以先创建一个用于存储虚拟节点的集合Dw,初始时刻集合Dw为空集。先取X=0,Y=1,此时Lin(0)和Lout(0)的交集集合数量为1,也即是说需要在Lin(0)和Lout(0)中均添加两个虚拟节点,此时需要增加虚拟节点7和虚拟节点8;同时将虚拟节点7和虚拟节点8添加到集合Dw中;再取X=0,Y=1,此时Lin(0)和Lout(1)的交集集合中元素数量为0,此时可以考虑集合Dw中是否存在可用虚拟节点。集合Dw中的虚拟节点是否可用的判断依据是,再次使用集合Dw中的虚拟节点,是否会对之前已经添加过虚拟节点的集合产生影响,例如在Lout(1)中添加虚拟节点7和虚拟节点8,显然,并不会对Lin(0)和Lout(0)的交集个数产生影响,因此,此时虚拟节点7和虚拟节点8均为可用节点,但显然,即便在Lout(1)中添加虚拟节点7和虚拟节点8也并不能满足Lin(0)和Lout(1)的交集集合中元素数量为3的要求,因此还需要分别将Lin(0)和Lout(1)添加一个虚拟节点9,同时将虚拟节点9加入集合Dw。[0080] 依次类推,再取X=0,Y依次取2、3、4、5、6,在交集集合中元素数量不足3时,则添加新的虚拟节点;在X=0的所有情况都轮询完毕之后,再取X=1并重复循环上述Y依次取0至6的过程,直到X取值从0到6所有情况都轮询完成,最终即可获得如表2所示的二跳索引表。[0081] 需要说明的是,在添加虚拟节点时,设定交集集合中元素数量为固定数量,能够在一定程度上简化虚拟节点的添加过程,并保证虚拟节点添加后的保密效果。但是在实际应用中通过增加虚拟节点对二跳索引表进行加密也并不必然要求任意两个节点对应的Lin()集合与Lout()集合的交集元素的个数相等,也可以针对不同的两个节点随机设定交集中元素个数,只要最终无法直接基于二跳索引表推断出节点之间的节点关系即可,对此,本申请中不再详细赘述。[0082] 在完成对二跳索引表添加节点的基础上,还需要对二跳索引表进行进一步的二次加密,以进一步保证对二跳索引表的加密效果。[0083] 可选地,对于添加虚拟节点之后的二条索引表的加密过程可以包括:[0084] 对一次加密二跳索引表的第一列数据通过哈希函数进行加密,获得加密二跳索引表的第一列加密数据;[0085] 对一次加密二跳索引表的第二列数据和第三列数据通过伪随机置换函数进行加密,获得加密二跳索引表的第二列加密数据和第三列加密数据。[0086] 第一列数据用哈希函数进行加密Ve=H(k1,V),也即通过哈希算法对第一密钥k1和节点V的节点编号,即可将该节点编码变换成另一种形式。对于第二列数据和第三列数据中的每一个元素w,可以利用伪随机置换函数进行加密we=π(k2,w),也即通过伪随机置换函数对第二密钥k2和第二列以及第三列中每一个元素进行运算,即可将每一个元素w变换成另一种加密后的数据形式,即we。[0087] 对于第一密钥k1和第二密钥k2可以随机生成,对此,本实施例中不做具体限制。可以理解的是,在实际应用中对第一列、第二列以及第三列的数据进行加密也并不必然采用上述哈希函数和伪随机置换函数,只要第一列数据对应的加密函数与第二列数据、第三列数据的加密函数不同,而第二列数据和第三列数据的加密函数相同即可。[0088] S12:在加密二跳索引表中加密后各个节点中遍历选取第一节点和第二节点,并根据加密二跳索引表查询获得第一节点的可到达节点集合与第二节点的被到达节点集合的交集集合。[0089] 对于第一节点和第二节点之间进行取交集的过程和上述添加虚拟节点取交集的过程类似,此处不再详细赘述。[0090] S13:根据第一节点和第二节点之间的节点关系,设定标识符。[0091] 如前所述可知,当需要确定第一节点是否可到达第二节点时,则对应的交集集合是第一节点的可到达节点集合与第二节点的被到达节点集合的交集集合。因此,此时的标识符为表征第一节点是否可到达第二节点的标识符。当第一节点可到达第二节点时,则该标识符可以取1,而当第一节点不可到达第二节点时,则该标识符可以取0。[0092] S14:根据交集集合中的元素和标识符生成第一节点和第二节点对应的验证码。[0093] 可选地,可以利用Mac函数和密钥数据对交集集合中的元素和所述标识符进行运算获得验证码,具体的,该验证码生成过程为M←Mac(k3,{we},f);其中k3为密钥数据,{we}为交集集合,f为标识符,M即为生成的验证码。[0094] 如前所述可知,每两个节点即存在一个交集集合,每个交集集合即可和两个节点的标识符生成一个验证码,由此依次轮询各个节点,即可生成任意两个节点对应的验证码。[0095] 为了便于后续客户端对验证码进行查询,可以进一步地将每两个节点对应的交集集合所生成的各个验证码构建形成验证码矩阵,其中每两个节点对应的验证码在验证码矩阵中的位置基于两个节点的节点编号进行设定,例如,对于节点编号为0的第一节点和节点编号为1的第二节点对应的验证码在验证码矩阵中的位置可以为(1.1),依次类推,即可构建形成该验证码矩阵。[0096] S15:将验证码和加密二跳索引表发送至云端服务器,以便客户端通过云服务器中验证码和加密二跳索引表确定生成验证码的标识符。[0097] 在各个验证码构建形成验证码矩阵之后,即可将该验证码矩阵和加密二跳索引表发送至云端服务器。在客户端进行两个节点之间的节点关系查询时,显然,可以通过云端服务器直接查询获得两个节点分别对应的加密后的可到达节点集合以及可被到达节点集合以及两个节点对应的验证码,基于这两个集合即可获得交集集合,显然该交集集合和两个节点对应的标识符进行运算的结果即为两个节点对应的验证码,由此,显然两个节点基于验证码和交集集合显然可以解析获得对应的标识符,而该标识符则是直接表征两个节点之间的节点关系的数据,由此即可快速简单的实现对两个节点之间的节点关系进行查询,整个过程中无需对加密二跳索引表中的数据做任何解密运算,更不需要对解密后的集合元素进行推导分析确定两个节点之间的可到达信息,由此在一定程度上为客户端查询获得两个节点之间的节点关系提供便利。[0098] 综上所述,本申请中在基于图数据形成二跳索引表并对二跳索引表加密之后,基于加密二跳索引表中的数据和表征节点之间的节点关系的标识符形成验证码,使得客户端在后续进行节点关系查询时,可以直接基于加密二跳索引表中的数据以及验证码即可直接解析出节点对应的标识符从而确定节点关系,在很大程度上简化了客户端查询节点关系的程序,为客户端进行节点关系信息的查询提供很大的便利性。[0099] 基于上述实施例,本申请中还进一步地提供了一种基于上述任意一项实施例对应的节点关系数据生成方法对应的一种节点关系的查询方法的实施例,参照图3,图3为本申请实施例提供的一种节点关系的查询方法的流程示意图,该节点关系的查询方法可以包括:[0100] S21:向云端服务器发送节点关系查询指令;其中,节点关查询指令中包含待查询节点关系的第一待查节点和第二待查节点的节点编号。[0101] 需要说明的是,云端服务器中存储的加密二跳索引表中的节点编号是加密后的编号,为此客户端向云端服务器发送节点查询之间,应当先将实际要查询的两个节点的节点编号进行加密转换。[0102] 和上述加密过程对应,客户端可以从数据拥有者的一端先获得加密的第一密钥k1以及加密的哈希函数,再利用该哈希函数和第一密钥k1即可实现对节点编号的转换。对于云服务器而言,其接收到的节点关系查询指令中第一待查询节点和第二待查询节点的节点编号也即是和进行加密转换之后的节点编号,基于该加密转换之后的节点编号,云端服务器即可直接在加密二跳索引表中直接查询获得第一待查节点的可到达节点集合以及第二待查节点的被到达节点集合。显然,该第一待查节点的可到达节点集合以及第二待查节点的被到达节点集合也同样是加密转换之后的节点集合。与此同时,还可以进一步该转换后的节点编号获得第一待查节点和第二待查节点对应的验证码。[0103] S22:接收云端服务器根据节点编号在加密二跳索引表中分别查询第一待查节点的可到达节点集合和第二待查节点的被到达节点集合,以及接收云端服务器查询获得的第一待查节点和第二待查节点对应的验证码。[0104] S23:对第一待查节点的可到达节点集合与第二待查节点的可被到达节点集合取交集,获得待查交集集合。[0105] 这一取交集集合的过程和上述实施例中取交集集合的方式类似,在此本实施例中不再赘述。[0106] S24:根据待查交集集合和验证码,确定第一待查节点和第二待查节点对应的标识符,以根据标识符确定第一待查节点和第二待查节点之间的节点关系。[0107] 基于上述节点关系的数据生成方法的实施例,可以明显确定,第一待查节点和第二待查节点对应的待查交集集合,也即是生成第一待查节点和第二待查节点的验证码的交集集合。[0108] 基于节点关系的数据生成方法的实施例中利用交集集合生成验证码的运算函数不同,可以采用不同的方式基于待查交集集合和验证码确定第一待查节点和第二待查节点之间的标识符。如果运算函数为可进行逆运算的函数,则可以直接利用验证码和待查交集集合进行逆运算,确定出标识符;例如对于加法运算函数而言,减法运算函数即为其逆运算函数,乘法运算函数的逆运算函数即为除法逆运算函数。[0109] 但是将在节点关系的数据生成方法的实施例中将交集集合和标识符生成验证码,这在一定程度上也是对数据进行加密,所使用的运算函数往往较为复杂,可能难以用简单的逆运算函数进行运算。[0110] 为此,在本申请的一种可选地实施例中,基于第一待查节点和第二待查节点对应的待查交集集合和验证码确定标识符(即节点关系)的过程可以包括:[0111] S241:设定第一待查节点和第二待查节点之间的标识符为可到达标识符;[0112] S242:利用可到达标识符和待查交集集合生成第一验证码。[0113] S243:判断第一验证码和验证码是否一致,若是,则第一待查节点和第二待查节点之间的节点关系为可到达,若否,则进入S244。[0114] S244:设定第一待查节点和第二待查节点之间的标识符为不可到达标识符。[0115] S245:利用不可到达标识符和待查交集集合生成第二验证码。[0116] S246:判断第二验证码和验证码是否一致,若是,则第一待查节点和第二待查节点之间的节点关系为不可到达,若否,则查询错误。[0117] 显然,确定出第一待查节点和第二待查节点之间的节点关系,也即是确定二者之间的标识符。[0118] 本实施例中通过设定标识符并反复试错的方式对标识符进行验证,最终确定出第一待查节点和第二待查节点之间的节点关系。在基于设定的标识符和待查交集集合进行运算获得第一验证码以及第二验证码的过程,和上述节点关系的数据生成方法的实施例中基于交集集合以及标识符获得验证码的运算函数、运算过程完全相同,以及运算所需要的密钥数据也可以通过数据拥有者一端的服务器获得,对此,本实施例中不做过多赘述。[0119] 综上所述,本申请中在通过云端服务器查询两个节点之间的节点关系时,无需对云端服务器查询获得的集合数据以及验证码进行多次解码并推导,即可简单的通过交集集合和验证码共同解析获得表征两个节点之间的节点关系的标识符,在很大程度上降低了客户端获得节点关系信息的难度。[0120] 下面对本发明实施例提供的节点关系的数据生成装置进行介绍,下文描述的节点关系的数据生成装置与上文描述的节点关系的数据生成方法可相互对应参照。[0121] 图4为本发明实施例提供的节点关系的数据生成装置的结构框图,参照图4的节点关系的数据生成装置可以包括:[0122] 索引表模块10,用于根据图数据中各个节点之间的节点关系信息生成对应的二跳索引表并对所述二跳索引表进行加密获得加密二跳索引表;[0123] 集合查询模块12,用于在所述加密二跳索引表中加密后的各个所述节点中遍历选取第一节点和第二节点,并根据所述加密二跳索引表查询获得所述第一节点的可到达节点集合与所述第二节点的被到达节点集合的交集集合;[0124] 标识符模块13,用于根据所述第一节点和所述第二节点之间的到达关系,设定标识符;[0125] 验证码模块14,用于根据所述交集集合中的元素和所述标识符生成所述第一节点和所述第二节点对应的验证码;[0126] 数据上传模块15,用于将所述验证码和所述加密二跳索引表发送至云端服务器,以便客户端通过所述云服务器中所述验证码和所述加密二跳索引表确定生成所述验证码的标识符。[0127] 可选地,验证码模块14具体用于利用Mac函数和密钥数据对所述交集集合中的元素和所述标识符进行运算获得所述验证码。[0128] 可选地,验证码模块14还用于根据每两个所述节点的所述交集集合对应的所述验证码构建验证码矩阵;[0129] 相应的,数据上传模块15具体用于将所述验证码矩阵和所述加密二跳索引表发送至所述云端服务器。[0130] 可选地,索引表模块11具体用于向所述二跳索引表中添加和所述节点的符号类型相同且不带标识的虚拟节点,形成一次加密二跳索引表;对所述一次加密二跳索引表进行二次加密获得所述加密二跳索引表。[0131] 可选的,索引表模块11具体用于对所述一次加密二跳索引表的第一列数据通过哈希函数进行加密,获得所述加密二跳索引表的第一列加密数据;对所述一次加密二跳索引表的第二列数据和第三列数据通过伪随机置换函数进行加密,获得所述加密二跳索引表的第二列加密数据和第三列加密数据;其中,所述一次加密二跳索引表的第一列数据为各个所述节点的节点编号,所述一次加密二跳索引表的第二列数据分别为各个所述节点对应的可被到达节点集合,所述一次加密二跳索引表的第三列数据分别为各个所述节点对应的可到达节点集合。[0132] 本实施例的节点关系的数据生成装置用于实现前述的节点关系的数据生成方法,因此节点关系的数据生成装置中的具体实施方式可见前文中的节点关系的数据生成方法的实施例部分,在此不再赘述。[0133] 基于上述论述,下文描述的节点关系的数据查询装置与上文描述的节点关系的数据查询方法可相互对应参照。[0134] 图5为本发明实施例提供的节点关系的数据查询装置的结构框图,相应地,本实施例中所涉及到的验证码和加密二跳索引表也是基于上述任一项节点关系的数据生成方法所获得的。[0135] 参照图5的节点关系的数据查询装置可以包括:[0136] 指令发送模块21,用于向云端服务器发送节点关系查询指令,其中,所述节点关查询指令中包含待查询节点关系的第一待查节点和第二待查节点的节点编号;[0137] 数据接收模块22,用于接收所述云端服务器根据所述节点编号在所述加密二跳索引表中分别查询所述第一待查节点的可到达节点集合和所述第二待查节点的被到达节点集合,以及接收所述云端服务器查询获得的所述第一待查节点和所述第二待查节点对应的验证码;[0138] 取交集模块23,用于对所述第一待查节点的可到达节点集合与所述第二待查节点的可被到达节点集合取交集,获得待查交集集合;[0139] 节点关系确定模块24,用于根据所述待查交集集合和所述验证码,确定所述第一待查节点和所述第二待查节点对应的标识符,以根据所述标识符确定所述第一待查节点和所述第二待查节点之间的节点关系。[0140] 可选地,节点关系确定模块24,具体用于设定所述第一待查节点和所述第二待查节点之间的标识符为可到达标识符;利用所述可到达标识符和所述待查交集集合生成第一验证码,并对比所述第一验证码和所述验证码;若所述第一验证码和所述验证码一致,则所述第一待查节点和所述第二待查节点之间的标识符为可到达;若所述第一验证码和所述验证码不一致,则设定所述第一待查节点和所述第二待查节点之间的标识符为不可到达标识符;利用所述不可到达标识符和所述待查交集集合生成第二验证码,并对比所述第二验证码和所述验证码,若所述第二验证码和所述验证码一致,则所述第一待查节点和所述第二待查节点之间的标识符为不可到达。[0141] 本实施例的节点关系的数据查询装置用于实现前述的节点关系的数据查询方法,因此节点关系的数据查询装置中的具体实施方式可见前文中的节点关系的数据查询方法的实施例部分,在此不再赘述。[0142] 本申请还提供了一种节点关系的查询系统的实施例,该节点关系的查询系统可以包括服务端、客户端以及云端服务器;[0143] 所述服务端用于执行实现如上任一项所述的节点关系的数据生成方法的步骤,以生成各个节点对应的验证码和加密二跳索引表;[0144] 所述云端服务器用于存储所述验证码和所述加密二跳索引表;[0145] 所述客户端用于执行实现如上任一项所述的节点关系的数据查询方法的步骤。[0146] 本实施例中的服务端也即是上述实施例中的数据拥有者一端的服务器,本实施例中通过服务端利用加密后的二跳索引表的数据和节点关系对应的标识符进行运算形成验证码;使得客户端可以通过云端服务器查询获得加密后的二跳索引表中的加密数据以及验证码之后,可以推算出标识符,由此即可确定节点关系,在一定程度上降低了客户端获得节点关系的难度。[0147] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。另外,本申请实施例提供的上述技术方案中与现有技术中对应技术方案实现原理一致的部分并未详细说明,以免过多赘述。[0148] 本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。

专利地区:山东

专利申请日期:2021-12-09

专利公开日期:2024-06-18

专利公告号:CN114168802B

电话咨询
读内容
搜本页
回顶部