CN116684083A - 基于两个哈希函数及其单向步程的不经意键值存储方法 - Google Patents
基于两个哈希函数及其单向步程的不经意键值存储方法 Download PDFInfo
- Publication number
- CN116684083A CN116684083A CN202310645721.7A CN202310645721A CN116684083A CN 116684083 A CN116684083 A CN 116684083A CN 202310645721 A CN202310645721 A CN 202310645721A CN 116684083 A CN116684083 A CN 116684083A
- Authority
- CN
- China
- Prior art keywords
- key
- value
- hypergraph
- data structure
- hash function
- 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.)
- Granted
Links
- 230000006870 function Effects 0.000 title claims abstract description 120
- 238000000034 method Methods 0.000 title claims abstract description 39
- 238000003860 storage Methods 0.000 title claims abstract description 25
- 230000003321 amplification Effects 0.000 claims description 34
- 238000003199 nucleic acid amplification method Methods 0.000 claims description 34
- 238000004364 calculation method Methods 0.000 claims description 9
- 238000012545 processing Methods 0.000 claims description 9
- 230000003416 augmentation Effects 0.000 claims description 7
- 238000004904 shortening Methods 0.000 abstract description 2
- 230000000694 effects Effects 0.000 abstract 1
- 238000010586 diagram Methods 0.000 description 11
- 238000013507 mapping Methods 0.000 description 7
- 238000004590 computer program Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000009827 uniform distribution Methods 0.000 description 2
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 229910001092 metal group alloy Inorganic materials 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000547 structure data Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2255—Hash tables
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0869—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving random numbers or seeds
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/50—Oblivious transfer
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Engineering (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于两个哈希函数及其单向步程的不经意键值存储方法,涉及不经意键值存储技术领域,该方法包括获取密钥键和查询值构成的键值对集合,分别计算每个密钥键的两个哈希函数值以及对应的单向步程;根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图;识别3阶超图中度为1的所有节点,并将每个节点相邻的超边剥离;按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构。本发明能够实现在缩短编码数据结构长度的同时,不过分降低编码速度、不增加存储空间的效果。
Description
技术领域
本发明涉及不经意键值存储技术领域,具体涉及一种基于两个哈希函数及其单向步程的不经意键值存储方法。
背景技术
不经意键值存储(oblivious key-value store,OKVS)是指能够在不透露密钥键(key)和值(value)具体内容的前提下保留key-value映射关系的一种数据结构,即对键值对集合{(ki,vi),i=1,2,......,n},构建从键值对到数据结构S映射关系f,使得f(S,ki)=vi。并且对于随机的值集合,使用不同的两个密钥键集合进行编码后的数据结构在计算上是不可区分的。
OKVS是一种安全存储键值对的数据结构概念,该技术能够做到隐藏其他具体的数据内容的同时查询某一需要值,使得解码方在没有其他密钥键的条件下无法获取其他的值,近年来常被用于隐私集合求交的场景中。
目前对于OKVS的研究主要聚焦于OKVS编码生成的数据结构长度和编码速度上,OKVS功能的关键步骤是确定数据结构(向量)S中不同位置的数值,其中的困难点在于键值对与该数据结构之间构成怎样的对应关系。目前性能较好的OKVS主要使用两个哈希函数将密钥键ki映射到目标数据结构的两个不同位置S(h1(ki))、S(h2(ki)),使得具体的实现方式是S中的每一个位置视为无向图中的一个节点,密钥键ki对应的两个不同节点可形成一条边,通过寻找度为1的节点,进而在图中剥离这个节点的边,重复进行,直到没有度为1的节点。然后对节点进行赋值,节点赋值的顺序是与剥离相反的顺序。另一种有效的方法是使用三个哈希函数,引入超图概念将上述方法进行改进,缩短了编码数据结构的长度。
但以上两种方法存在的问题主要是:
(1)两个哈希函数映射的OKVS因使用的哈希函数较少,对节点的约束条件更少,导致编码的数据结构长度较长,使得传输效率更低。
(2)三个哈希函数映射的OKVS虽然有效缩短了编码的数据结构长度,但是在进行编码时需要对三个哈希函数的哈希表进行运算和存储,编码速度变慢,需要的存储空间更大。
发明内容
针对现有技术中的上述不足,本发明提供了一种基于两个哈希函数及其单向步程的不经意键值存储方法,达到缩短编码数据结构长度的同时,不过分降低编码速度、不增加存储空间的目的。
为了达到上述发明目的,本发明采用的技术方案为:
一种基于两个哈希函数及其单向步程的不经意键值存储方法,包括以下步骤:
获取密钥键和查询值构成的键值对集合,分别计算每个密钥键的两个哈希函数值以及对应的单向步程;
根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图;
识别3阶超图中度为1的所有节点,并将每个节点相邻的超边剥离;
按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构。
可选地,所述单向步程的计算方法为:
判断每个密钥键的两个哈希函数值中第二哈希函数值是否大于第一哈希函数值;
若是,将第二哈希函数值和第一哈希函数值的差值作为两个哈希函数值的单向步程;
否则,则将第二哈希函数值和第一哈希函数值的差值与哈希函数值域的最大值之和作为两个哈希函数值的单向步程。
可选地,所述根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图的方法为:
根据哈希函数值值域确定3阶超图中节点数量;
将每个密钥键的两个哈希函数值以及对应的单向步程分别对应3阶超图中的一个节点;
将每个密钥键对应3阶超图中一条连接该密钥键的两个哈希函数值以及对应的单向步程分别对应节点的超边。
可选地,生成3阶超图后还包括:
构建超图数据结构向量,其元素的位置分别与3阶超图中各个节点与超边对应设置,将超图数据结构向量中与3阶超图中各个节点与超边对应位置的元素设置为1,其余位置的元素设置为0。
可选地,将每个节点相邻的超边剥离时包括:
构建栈结构记录超边剥离的顺序,将剥离的超边依次存储在栈结构中,采用先存储后使用、后存储先使用的方式存储和使用超边。
可选地,将每个节点相邻的超边剥离后还包括:
判断剥离后的3阶超图中是否存在2-core子图;
若是,则在3阶超图中添加扩增节点,利用扩增节点对2-core子图进行扩增处理;
否则,构建扩增数据结构向量为空向量。
可选地,在3阶超图中添加扩增节点,利用扩增节点对2-core子图进行扩增处理具体包括:
根据3阶超图生成条件确定扩增节点数量;
在3阶超图中添加确定数量的扩增节点,并构建扩增数据结构向量,将扩增数据结构向量中元素的位置分别与扩增节点一一对应;
根据2-core子图中超边对应的所有密钥键对2-core子图中所有节点和扩增节点进行赋值。
可选地,所述按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构,具体包括:
从栈结构中依次取出存储的超边,根据超图数据结构向量和扩增数据结构向量对超边连接的节点进行赋值;
对超图数据结构向量和扩增数据结构向量中每个空位填空一个随机值,所述随机值满足每个密钥键对应的超边节点的和等于查询值;
根据超图数据结构向量和扩增数据结构向量得到不经意键值存储编码数据结构。
可选地,还包括:
获取任意的密钥键,计算该密钥键的两个哈希函数值以及对应的单向步程;
根据计算的哈希函数值和单向步程从不经意键值存储编码数据结构中查询对应的存储数值;
根据查询的存储数值确定该密钥键对应的查询值。
本发明具有以下有益效果:
(1)本发明与两个哈希函数映射的OKVS方案相比,每一个密钥键ki对应的节点增加至三个,因此每个节点(即数据结构S的每个位置)需要满足的约束增加,因此可有效缩短编码数据结构。
(2)本发明与三个哈希函数映射的OKVS方案相比,编码数据结构长度相同,但单向步程的计算较哈希函数而言更加简便并且无需单独存储,有效减少了OKVS方案的计算复杂度与需要的存储空间。
附图说明
图1为实施例1中一种基于两个哈希函数及其单向步程的不经意键值存储方法的流程示意图;
图2为实施例1中单向步程计算示意图;
图3为实施例1中生成的3阶超图结构示意图;
图4为实施例1中3阶超图剥离一条超边后的结构示意图;
图5为实施例1中3阶超图剥离两条超边后的结构示意图;
图6为实施例1中对剥离超边后的3阶超图进行2-core子图处理示意图。
具体实施方式
下面对本发明的具体实施方式进行描述,以便于本技术领域的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本技术领域的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。
本发明实施例提供了一种基于两个哈希函数及其单向步程的不经意键值存储方法,该方法包括编码流程与解码流程。其中编码流程(Encode)是将键值对{(ki,vi),i=1,2,......,n}编码映射到数据结构S的过程,解码流程(Decode)是使用数据结构S和密钥键k、查询值v的相反过程。
实施例1
如图1所示,本发明实施例提供的一种基于两个哈希函数及其单向步程的不经意键值存储方法,包括以下步骤S1至S4:
S1、获取密钥键和查询值构成的键值对集合,分别计算每个密钥键的两个哈希函数值以及对应的单向步程;
在本发明的一个可选实施例中,本实施例首先获取编码方输入的键值对集合{(ki,vi),i=1,2,......,n},n为键值对的数量,并利用两个哈希函数{h1,h2}分别计算每个密钥键ki的哈希函数值h1(ki)、h2(ki);
然后利用单向步程函数对每个密钥键ki的哈希函数值h1(ki)、h2(ki)分别计算哈希函数值h1(ki)、h2(ki)对应的单向步程d(h1(ki),h2(ki))。
本实施例中单向步程的计算方法为:
判断每个密钥键的两个哈希函数值中第二哈希函数值是否大于第一哈希函数值;
若是,将第二哈希函数值和第一哈希函数值的差值作为两个哈希函数值的单向步程;
否则,则将第二哈希函数值和第一哈希函数值的差值与哈希函数值域的最大值之和作为两个哈希函数值的单向步程。
本实施例采用的单向步程函数是一种二元函数,如图2所示,其思想是将哈希函数值的值域[m]视为均匀分布于圆周上的m个点,每相邻的两点之间的顺时针跳转视为一步,单向步程的取值为圆周上一个哈希函数值顺时针跳转至另一个哈希函数值所需要的步数。
对于需要计算的哈希函数值h1(ki)、h2(ki),若哈希函数值满足h1(ki)<h2(ki),则单向步程d(h1(ki),h2(ki))=h2(ki)-h1(ki);否则单向步程d(h1(ki),h2(ki))=m+h2(ki)-h1(ki)。
本实施例的单向步程函数具有不满足对称性,即单向步程d(h1(ki),h2(ki))和d(h2(ki),h1(ki))不一定相等;并且单向步程d(h1(ki),h2(ki))的取值范围与哈希函数值h1(ki)、h2(ki)的取值范围保持一致,若哈希函数值h1(ki)、h2(ki)的选取满足随机均匀分布,则单向步程d(h1(ki),h2(ki))也满足随机均匀分布。以上性质保证了每个密钥键ki对应的两个哈希函数值h1(ki)、h2(ki)以及对应的单向步程d(h1(ki),h2(ki))的取值及分布取决于两个哈希函数。
下面以一具体键值对集合{(k1,v1),(k2,v2),(k3,v3),(k4,v4),(k5,v5)}的编码为例,其中假设查询值v1=3,v2=8,v3=9,v4=7,v5=8,两个哈希函数值h1(ki)、h2(ki)值域均为[6]。
采用两个哈希函数{h1,h2}分别计算每个密钥键ki的哈希函数值h1(ki)、h2(ki),如表1的第一列和第二列所示,然后采用单向步程函数分别计算哈希函数值h1(ki)、h2(ki)对应的单向步程d(h1(ki),h2(ki)),如表1的第三列所示。
表1、哈希函数值以及单向步程计算表
S2、根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图;
在本发明的一个可选实施例中,本实施例根据步骤S1中计算的哈希函数值h1(ki)、h2(ki)以及单向步程d(h1(ki),h2(ki))生成3阶超图,该超图包括多个节点以及多条超边,其中超图中的每个节点对应向量的每一个位置,将超图中的每条超边对密钥键ki进行映射。
本实施例根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图的方法为:
根据哈希函数值值域确定3阶超图中节点数量;
将每个密钥键的两个哈希函数值以及对应的单向步程分别对应3阶超图中的一个节点;
将每个密钥键对应3阶超图中一条连接该密钥键的两个哈希函数值以及对应的单向步程分别对应节点的超边。
本实施例在生成3阶超图后还包括:
构建超图数据结构向量,其元素的位置分别与3阶超图中各个节点与超边对应设置,将超图数据结构向量中与3阶超图中各个节点与超边对应位置的元素设置为1,其余位置的元素设置为0。
在本实施例构建的3阶超图中,每一个密钥键ki对应一条连接三个节点(ni1,ni2,ni3)的超边,即ei={ni1,ni2,ni3},所包含的三个节点为哈希函数值h1(ki)、h2(ki)以及单向步程d(h1(ki),h2(ki))所对应的节点,即
为了方便计算并接收各节点与超边的赋值,本实施例使用一个空向量L的每个位置对应于一个节点。定义函数l(x)是输出长为m的比特向量的函数,输出的比特向量中除h1(x)、h2(x)和d(h1(x),h2(x))对应位置为1外,其余位置均为0,将其对应于每条超边。
在本实施例中,因哈希函数的值域为[6],因此生成的3阶超图的节点集合为N={n1,n2,...,n6},根据表1的计算结果,最终生成的3阶超图结构如图3所示。
S3、识别3阶超图中度为1的所有节点,并将每个节点相邻的超边剥离;
在本发明的一个可选实施例中,为确定合适的顺序对节点赋值,本实施例通过识别3阶超图中度为1的节点,并将与该节点相连接的超边剥离,重复进行直至无度为1的节点。这里超图中节点的度是指该节点所连接的超边数,度越高表示该节点受到超边的约束越多。
本实施例通过对度为1的节点相连接的超边进行剥离,确定对节点赋值顺序,将连接最复杂、受到约束最多的节点放在最先进行赋值,一边判断度为1的节点,一边剥除其连接的边,这样能够确保先剥离的超边对应节点相对更简单,越后剥离的超边对应的节点越复杂。
本实施例将每个节点相邻的超边剥离时包括:
构建栈结构记录超边剥离的顺序,将剥离的超边依次存储在栈结构中,采用先存储后使用、后存储先使用的方式存储和使用超边。
本实施例设置了一个栈结构P以记录超边剥离的顺序,栈结构是一种特殊的数据结构,其中数据的存储和使用均只能按序进行,并且在提取使用数据时遵从先存储后使用,后存储先使用。
为找到图3中度为1的节点,对所有j∈[m],寻找满足
的密钥键ki,将密钥键ki推入栈结构P的顶端。
在本实施例中,满足 故将密钥键k5推入栈结构P的顶端,并记P={k5}。对应于图3中的节点n6的度为1,与其连接的超边为e5,故从超图中剥离e5,如图4所示。
剥离e5后,满足 故将密钥键k3推入栈结构P的顶端,令P={k5,k3}。对应于图4中的节点n3的度为1,与其连接的超边为e3,故从超图中剥离e3,如图5所示。
此时,超图中无度为1的节点,剥离结束。
本实施例将每个节点相邻的超边剥离后还包括:
判断剥离后的3阶超图中是否存在2-core子图;
若是,则在3阶超图中添加扩增节点,利用扩增节点对2-core子图进行扩增处理;
否则,构建扩增数据结构向量为空向量。
本实施例在3阶超图中添加扩增节点,利用扩增节点对2-core子图进行扩增处理具体包括:
根据3阶超图生成条件确定扩增节点数量;
在3阶超图中添加确定数量的扩增节点,并构建扩增数据结构向量,将扩增数据结构向量中元素的位置分别与扩增节点一一对应;
根据2-core子图中超边对应的所有密钥键和其查询值对2-core子图中所有节点和扩增节点进行赋值。
本实施例对剥离结果进行判断,如存在2-core子图,则进行步骤S3-1,如不存在2-core子图,则进行步骤S3-2。
其中2-core子图是指在剩余节点中找不到度为1的节点,所有节点的度均大于等于2,此时对剩余节点进行赋值时所需的线性方程组可能不存在可行解,导致赋值失败。
S3-1、假设发现存在2-core子图,如图5所示,则通过使用扩增节点和扩增向量R处理2-core子图;
本实施例对于2-core子图的处理方法是在超图中增加适当r个扩增节点,同时添加映射r(x),r(x)是输出一个长为r的随机比特向量的函数,输出的比特向量中仅有一个随机位置为1,其余全部为0;从而将ki额外对应于扩增节点中的一个节点,将原本ki对应三个节点的超边扩增为四个节点。
本实施例首先确定扩增节点数量r:根据需要确定参数λ,使得编码失败概率小于2-λ;假设超图产生2-core子图超边数为v,对所需的概率参数ε,通过条件P(χ≤t)≥1-ε寻找χ的最大上界t。令r=t+λ,在该条件下2-core子图中节点赋值的方程组求解失败的概率小于ε+2-λ。
一般情况下,2-core子图中的节点数与扩增节点数的数量与原始节点数相比较少,所以可直接通过解方程组进行赋值,对所有解方程组<l(ki)||rki,L//R=vi,并将方程组的任意一组可行解的值置于S=L//R中对应位置。
在本实施例中,存在2-core子图如图5所示,假设选取扩增向量长度为2,将2-core子图中的所有超边都随机映射到节点r2、r1中的一个。由于 将其对应的超边e1、e2、e4分别映射到r2、r1、r1,如图6所示。可计算l(ki)、r(ki)如表2所示。
表2、2-core子图中l(ki)、r(ki)计算表
l(ki) | r(ki) | |
k1 | [1,1,1,0,0,0] | [0,1] |
k2 | [0,1,1,0,1,0] | [1,0] |
k4 | [1,1,0,0,1,0] | [1,0] |
故而可解方程组:
可选取其可行解为:
L(1)=0,L(2)=1,L(3)=1,L(5)=2,R(1)=4,R(2)=1
S3-2、若剥离结束后发现不存在2-core子图,即超图完全剥离,则令扩增数据结构向量R=[],即令其等于一个空向量。
S4、按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构。
在本发明的一个可选实施例中,本实施例按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构,具体包括:
从栈结构中依次取出存储的超边,根据超图数据结构向量和扩增数据结构向量对超边连接的节点进行赋值;
对超图数据结构向量和扩增数据结构向量中每个空位填空一个随机值,该随机值满足每个密钥键对应的超边节点的和等于查询值;
根据超图数据结构向量和扩增数据结构向量得到不经意键值存储编码数据结构。
本实施例从获得的栈结构P中逐一推出密钥键ki,由于栈结构数据先进后出的性质,这样推出密钥键ki恰好可以使得最后剥离的超边对应密钥键ki最先被推出,使其对应的最复杂的节点首先被赋值。当密钥键ki对应的节点也是2-core子图中的节点,在步骤S3-1中已被赋值,但因为该超边能够被剥离,所以在L的h1(ki),h2(ki),d(h1(ki),h2(ki))三个位置中至少有一个位置对应节点不在2-core子图中,并未赋值,可通过方程<l(ki)||r(ki),L||R>=vi对其进行赋值。
在本实施例中,根据步骤S3得到的栈结构为P={k5,k3},l(ki)的计算结果以及r(ki)的随机结果如表3所示。
表3、非2-core子图超边对应l(ki)、r(ki)结果表
l(ki) | r(ki) | |
k3 | [1,0,0,1,1,0] | [1,0] |
k5 | [0,1,0,1,0,1] | [1,0] |
根据步骤S3-1选择的可行解,则对栈结构P中元素进行如下操作:
首先推出栈结构P顶端的密钥键k3,根据方程L(1)+L(4)+L(5)+R(1)=v3=9赋值,由可行解得L(1)=0,L(5)=2,R(1)=4,可得L(4)=3。
继续推出栈结构P顶端的密钥键k5,根据方程L(2)+L(4)+L(6)+R(1)=v5=8赋值,由可行解和L(4)=3可得L(6)=0。
对超图数据结构向量L和扩增数据结构向量R中每一空位填充域上的一个随机值,得到不经意键值存储编码数据结构S=L||R。
本实施例通过对空位进行随机赋值,可以增加数据结构的随机性,使得键值对之间的映射关系更加复杂。
在本实施例中,最终得到不经意键值存储编码数据结构S=L||R=[0,1,1,3,2,0,4,1]。
实施例2
本发明实施例在实施例1所描述的一种基于两个哈希函数及其单向步程的不经意键值存储方法的基础上,在编码方完成不经意键值存储编码数据结构的构建,然后在解码方完成基于不经意键值存储编码数据结构对任意密钥键的解码处理。
本实施例还包括:
获取任意的密钥键,计算该密钥键的两个哈希函数值以及对应的单向步程;
根据计算的哈希函数值和单向步程从不经意键值存储编码数据结构中查询对应的存储数值;
根据查询的存储数值确定该密钥键对应的查询值。
在本实施例中,本实施例获取解码方输入不经意键值存储编码数据结构S,与密钥键k,系统识别数据结构为S=L||R;
然后计算密钥键k对应的哈希函数值h1(k)、h2(k)与单向步程d(h1(k),h2(k));
再根据计算的哈希函数值h1(k)、h2(k)与单向步程d(h1(k),h2(k))从不经意键值存储编码数据结构S中查询对应位置存储的编码值;
最后根据查询的编码值计算对应的查询值:
Decode(S,ki)=L(h1(ki))+L(h2(ki))+L(d(h1(ki),h2(ki)))+R(r(ki))=vi
在本实施例中,对于密钥键k1,其对应解码值为:
Decode(S,k1)=L(h1(k1))+L(h2(k1))+L(d(h1(k1),h2(k1)))+R(r(k1))
=L(1)+L(3)+L(2)+R(2)
0+1+1+1=3=v1
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (9)
1.一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,包括以下步骤:
获取密钥键和查询值构成的键值对集合,分别计算每个密钥键的两个哈希函数值以及对应的单向步程;
根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图;
识别3阶超图中度为1的所有节点,并将每个节点相邻的超边剥离;
按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构。
2.根据权利要求1所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,所述单向步程的计算方法为:
判断每个密钥键的两个哈希函数值中第二哈希函数值是否大于第一哈希函数值;
若是,将第二哈希函数值和第一哈希函数值的差值作为两个哈希函数值的单向步程;
否则,则将第二哈希函数值和第一哈希函数值的差值与哈希函数值域的最大值之和作为两个哈希函数值的单向步程。
3.根据权利要求2所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,所述根据每个密钥键的两个哈希函数值以及对应的单向步程生成3阶超图的方法为:
根据哈希函数值值域确定3阶超图中节点数量;
将每个密钥键的两个哈希函数值以及对应的单向步程分别对应3阶超图中的一个节点;
将每个密钥键对应3阶超图中一条连接该密钥键的两个哈希函数值以及对应的单向步程分别对应节点的超边。
4.根据权利要求3所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,生成3阶超图后还包括:
构建超图数据结构向量,其元素的位置分别与3阶超图中各个节点与超边对应设置,将超图数据结构向量中与3阶超图中各个节点与超边对应位置的元素设置为1,其余位置的元素设置为0。
5.根据权利要求4所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,将每个节点相邻的超边剥离时包括:
构建栈结构记录超边剥离的顺序,将剥离的超边依次存储在栈结构中,采用先存储后使用、后存储先使用的方式存储和使用超边。
6.根据权利要求5所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,将每个节点相邻的超边剥离后还包括:
判断剥离后的3阶超图中是否存在2-core子图;
若是,则在3阶超图中添加扩增节点,利用扩增节点对2-core子图进行扩增处理;
否则,构建扩增数据结构向量为空向量。
7.根据权利要求6所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,在3阶超图中添加扩增节点,利用扩增节点对2-core子图进行扩增处理具体包括:
根据3阶超图生成条件确定扩增节点数量;
在3阶超图中添加确定数量的扩增节点,并构建扩增数据结构向量,将扩增数据结构向量中元素的位置分别与扩增节点一一对应;
根据2-core子图中超边对应的所有密钥键和其查询值对2-core子图中所有节点和扩增节点进行赋值。
8.根据权利要求7所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,所述按照与超边剥离顺序相反的顺序,逐一对每个密钥键对应的超边连接的节点进行赋值,得到不经意键值存储编码数据结构,具体包括:
从栈结构中依次取出存储的超边,根据超图数据结构向量和扩增数据结构向量对超边连接的节点进行赋值;
对超图数据结构向量和扩增数据结构向量中每个空位填空一个随机值,所述随机值满足每个密钥键对应的超边节点的和等于查询值;
根据超图数据结构向量和扩增数据结构向量得到不经意键值存储编码数据结构。
9.根据权利要求1所述的一种基于两个哈希函数及其单向步程的不经意键值存储方法,其特征在于,还包括:
获取任意的密钥键,计算该密钥键的两个哈希函数值以及对应的单向步程;
根据计算的哈希函数值和单向步程从不经意键值存储编码数据结构中查询对应的存储数值;
根据查询的存储数值确定该密钥键对应的查询值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310645721.7A CN116684083B (zh) | 2023-06-02 | 2023-06-02 | 基于两个哈希函数及其单向步程的不经意键值存储方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310645721.7A CN116684083B (zh) | 2023-06-02 | 2023-06-02 | 基于两个哈希函数及其单向步程的不经意键值存储方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116684083A true CN116684083A (zh) | 2023-09-01 |
CN116684083B CN116684083B (zh) | 2024-05-28 |
Family
ID=87784867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310645721.7A Active CN116684083B (zh) | 2023-06-02 | 2023-06-02 | 基于两个哈希函数及其单向步程的不经意键值存储方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116684083B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212131A1 (en) * | 2012-02-09 | 2013-08-15 | Fujitsu Limited | Symbolic hyper-graph database |
US20150220684A1 (en) * | 2014-02-06 | 2015-08-06 | Reference Genomics, Inc. | System and method for characterizing biological sequence data through a probabilistic data structure |
CN111814166A (zh) * | 2020-07-10 | 2020-10-23 | 上海淇毓信息科技有限公司 | 一种数据加密方法、装置和电子设备 |
CN115309945A (zh) * | 2022-07-11 | 2022-11-08 | 上海富数科技有限公司广州分公司 | 键值对的数据结构的构建方法、系统、设备及存储介质 |
CN116090002A (zh) * | 2022-12-30 | 2023-05-09 | 中移动信息技术有限公司 | 多方隐私集合求交方法、装置、系统及存储介质 |
-
2023
- 2023-06-02 CN CN202310645721.7A patent/CN116684083B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130212131A1 (en) * | 2012-02-09 | 2013-08-15 | Fujitsu Limited | Symbolic hyper-graph database |
US20150220684A1 (en) * | 2014-02-06 | 2015-08-06 | Reference Genomics, Inc. | System and method for characterizing biological sequence data through a probabilistic data structure |
CN111814166A (zh) * | 2020-07-10 | 2020-10-23 | 上海淇毓信息科技有限公司 | 一种数据加密方法、装置和电子设备 |
CN115309945A (zh) * | 2022-07-11 | 2022-11-08 | 上海富数科技有限公司广州分公司 | 键值对的数据结构的构建方法、系统、设备及存储介质 |
CN116090002A (zh) * | 2022-12-30 | 2023-05-09 | 中移动信息技术有限公司 | 多方隐私集合求交方法、装置、系统及存储介质 |
Non-Patent Citations (1)
Title |
---|
谭伟;杨书新;: "一种基于双哈希编码的超图集合查询方法", 计算机应用与软件, no. 03, 15 March 2013 (2013-03-15), pages 35 - 37 * |
Also Published As
Publication number | Publication date |
---|---|
CN116684083B (zh) | 2024-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649346B (zh) | 数据重复性校验方法及装置 | |
CN103400174B (zh) | 一种二维码的编码方法、解码方法及系统 | |
CN108108436B (zh) | 数据存储方法、装置、存储介质及电子设备 | |
CN107370560A (zh) | 一种极化码的编码和速率匹配方法、装置及设备 | |
US9619657B2 (en) | Method and apparatus for storing redeem code, and method and apparatus for verifying redeem code | |
CN110728376B (zh) | 一种基于树状拓扑结构的联邦学习方法及装置 | |
CN111625534A (zh) | 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法 | |
CN108768656B (zh) | 一种基于哈希算法的数据校验方法 | |
CN110019205B (zh) | 一种数据存储、还原方法、装置及计算机设备 | |
WO2023202149A1 (zh) | 有限状态熵编码的状态选择方法、系统、存储介质及设备 | |
CN107508775B (zh) | 一种稀疏码多址接入系统中的译码方法及装置 | |
CN113746487B (zh) | 一种数据压缩方法、装置及电子设备和存储介质 | |
CN110097581B (zh) | 基于点云配准icp算法构建k-d树的方法 | |
CN116684083B (zh) | 基于两个哈希函数及其单向步程的不经意键值存储方法 | |
CN112182021B (zh) | 一种用户数据查询方法、装置和系统 | |
CN109710633B (zh) | 中间人信息的确定方法、装置及智能终端 | |
CN115882867B (zh) | 一种基于大数据的数据压缩存储方法 | |
CN107645665B (zh) | 一种WebP熵编码的方法及装置 | |
CN113468383B (zh) | 家族关系图谱的搜索方法、装置、电子设备及存储介质 | |
CN115858709A (zh) | 多尺度空间数据的处理方法、电子设备及存储介质 | |
CN106649359B (zh) | 一种空间点数据的处理方法及装置 | |
CN113495901B (zh) | 一种面向可变长数据块的快速检索方法 | |
CN114880360A (zh) | 一种基于贝叶斯优化的数据检索方法及装置 | |
CN111213146B (zh) | 伪数据生成装置、其方法和记录介质 | |
CN110875744B (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 |