一种基于云服务的模式串匹配验证方法及装置与流程

文档序号:12465073阅读:176来源:国知局
一种基于云服务的模式串匹配验证方法及装置与流程

本发明属于计算机技术领域,尤其涉及一种基于云服务的模式串匹配验证方法及装置。



背景技术:

模式串匹配是指在较长字符串中找到与给定较短字符串的所有子串的过程,已被广泛地用于垃圾邮箱过滤、入侵检测、防火墙过滤以及信息检索等领域,目前随着云技术的发展,越来越多的企业、个人出于方便管理和节约成本的考虑,将模式串匹配查询外包给云计算处理,但是这也导致用户失去了对数据和数据查询的控制权,引发了如何验证云端返回的查询结果是否正确、是否可靠的问题,即数据查询可验证问题。

现有技术中该问题的解决方案为云服务在得到匹配结果的同时生成验证证据,将匹配结果和验证证据一起发送给用户,用户再通过用于匹配查询的模式串、匹配结果和验证证据,来验证匹配结果是否正确。具体的实现方案主要有Martel et al.在2004年提出的可验证数据结构的通用解决方案和Papadopoulos et al.在2015年提出的实用的可验证模式串匹配Suffix Tree(后缀树)方案,但是第一种方案的验证证据较大,导致用户的验证效率较低,第二种方案云服务返回给用户的验证证据内容较为繁多、简洁度不够,同样导致用户的验证步骤较为繁杂。



技术实现要素:

本发明的目的在于提供一种基于云服务的模式串匹配验证方法及装置,旨在解决由于现有技术无法提供一种简洁有效的模式串匹配验证方法,导致外包给云服务的数据量过多、云服务返回给用户的验证证据内容过于繁多以及用户在验证云服务返回的匹配结果时验证效率较低的问题。

一方面,本发明提供了一种基于云服务的模式串匹配验证方法,所述方法包括下述步骤:

预设云服务器接收到数据访问端的模式串匹配查询请求时,获取所述模式匹配查询请求中的待匹配模式串;

所述云服务器将所述待匹配模式串与预先存储的文本串进行匹配;

当所述待匹配模式串在所述文本串中匹配成功时,所述云服务器根据所述文本串关联的查询数据结构和可验证数据结构,获取匹配成功的验证证据,并将所述匹配成功的结果和所述匹配成功的验证证据发送给所述数据访问端,所述可验证数据结构由数据拥有端通过预设的哈希函数对所述文本串进行预处理得到;

所述数据访问端根据所述待匹配模式串、所述匹配成功的验证证据以及与所述文本串关联的验证参数,确定所述匹配成功的结果是否正确。

另一方面,本发明提供了一种基于云服务的模式串匹配验证装置,所述装置包括:

模式串获取模块,用于预设云服务器接收到数据访问端的模式串匹配查询请求时,获取所述模式串匹配查询请求中的待匹配模式串;

模式串匹配模块,用于所述云服务器将所述待匹配模式串与预先存储的文本串进行匹配;

证据获取模块,用于当所述待匹配模式串在所述文本串中匹配成功时,所述云服务器根据所述文本串关联的查询数据结构和可验证数据结构,获取匹配成功的验证证据,并将所述匹配成功的结果和所述匹配成功的验证证据发送给所述数据访问端,所述可验证数据结构由数据拥有端通过预设的哈希函数对所述文本串进行预处理得到;以及

验证模块,用于所述数据访问端根据所述验证证据、所述匹配成功的验证证据以及与所述文本串关联的验证参数,确定所述匹配成功的结果是否正确。

本发明包括云服务器、数据访问端和数据拥有端三个执行主体,云服务器接收到数据访问端的模式串匹配串查询请求时,获取模式串匹配查询请求中的待匹配模式串,并将该待匹配模式串与预先存储的文本串进行匹配,当待匹配模式串与文本串匹配成功时,云服务器根据文本串关联的查询数据结构和可验证数据结果,获取匹配成功的结果所对应的验证证据,并将匹配成功的结果和验证证据发送给数据访问端,数据访问端再根据待匹配模式串、匹配成功的验证证据以及与文本串关联的验证参数,确定该匹配成功的结果是否正确,其中,可验证数据结构是由数据拥有端通过预设的哈希函数对文本串进行预处理得到的,从而通过在数据拥有端采用预设的哈希函数对文本串进行预处理,有效地简化了可验证数据结构,进而不仅大大减少可云服务的数据存储量和数据运算量,而且数据访问端也只需存储固定大小的验证参数,有效地提高了模式串匹配的验证效率。

附图说明

图1是本发明实施例一提供的基于云服务的模式串匹配验证方法实现流程图;

图2是本发明实施例一提供的基于云服务的模式串匹配验证方法中数据拥有端对文本串进行预处理的实现流程图;

图3是本发明实施例一提供的基于云服务的模式串匹配验证方法中查询数据结构中后缀数组的示例图;

图4是本发明实施例一提供的基于云服务的模式串匹配验证方法中查询数据结构中最长公共前缀数组的示例图;

图5是本发明实施例一提供的基于云服务的模式串匹配验证方法中获取匹配成功的验证证据的实现流程图;

图6是本发明实施例二提供的基于云服务的模式串匹配验证装置的结构示意图;以及

图7是本发明实施例二提供的基于云服务的模式串匹配验证装置的优选结构示意图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

以下结合具体实施例对本发明的具体实现进行详细描述:

实施例一:

图1示出了本发明实施例一提供的一种基于云服务的模式串匹配验证方法实现流程,为了便于说明,仅示出了与本发明实施例相关的部分,详述如下:

在步骤S101中,预设云服务器接收到数据访问端的模式串匹配查询请求时,获取模式匹配查询请求中的待匹配模式串。

在本发明实施例中,当用户需要进行模式串匹配查询时,可通过数据访问端向云服务器发送模式串匹配查询请求,以查询待匹配模式串在云服务器上的匹配结果并验证该匹配结果是否正确,其中,待匹配模式串为用户输入的待匹配内容。作为示例地,当通过模式串匹配进行垃圾邮箱过滤时,待匹配模式串可为一封邮件中的内容,当通过模式串匹配进行入侵检测时,待匹配模式串可为一串IP地址。

在步骤S102中,云服务器将待匹配模式串与预先存储的文本串进行匹配。

在本发明实施例中,将待匹配模式串与云服务器中预先存储的文本串在云服务器中进行匹配,该文本串为数据拥有端预先发送给云服务器的文本数据。作为示例地,当通过模式串匹配进行垃圾邮箱过滤时,文本串可为用于垃圾邮箱过滤的所有关键字组合而成的文本数据,当通过模式串匹配进行入侵检测时,文本串可为经统计所有可能为入侵地址的IP地址组合而成的文本数据。

在步骤S103中,当待匹配模式串在文本串中匹配成功时,云服务器根据文本串关联的查询数据结构和可验证数据结构,获取匹配成功的验证证据,并将匹配成功的结果和匹配成功的验证证据发送给数据访问端,可验证数据结构由数据拥有端通过预设的哈希函数对文本串进行预处理得到。

在本发明实施例中,当待匹配模式串在文本串中查找到一个匹配位置时,可认为待匹配模式串在文本串中匹配成功,此时,云服务器可根据与该文本串关联的查询数据结构和可验证数据结构,获取匹配成功的验证证据。

具体地,如图2所示,数据拥有端对文本串进行预处理,得到查询数据结构和可验证数据结构可通过以下步骤实现:

在步骤S201中,数据拥有端根据文本串,生成查询数据结构,查询数据结构包括文本串的后缀数组和最长公共前缀数组。

文本串被预先存储在数据拥有端,后缀数组中存储文本串中所有后缀字符串的开始字符在该文本串对应的位置,最长公共前缀数组用来存储后缀数组中当前位置的后缀字符串与上一位置的后缀字符串之间的最长公共前缀长度,因此在后缀数组和最长公共前缀数组中存储的数据都为整数数据,后缀数组和最长公共前缀数组作为查询数据结构可有效提高后续待匹配模式串与文本串的匹配过程。

作为示例地,可先获取文本串的所有后缀字符串,再将所有后缀字符串按照一定顺序(如按照字典顺序)进行排序,获取这些后缀字符串中开始字符在文本串中的位置,并将这些位置按照后缀字符串排序的顺序存储在后缀数组中,再根据后缀数组,构建最长公共前缀数组。图3示出了文本串为”suffix”时后缀数组的构建过程,图4示出了文本串为”suffix”时最长公共前缀数组的构建过程。如图3所示,S[i]为文本串,SFi为开始字符为文本串第i个字符的后缀字符串,SA[i]为后缀数组中第i个元素对应后缀字符串的开始字符在文本串中的位置,如图4所示,LCP[i]为后缀数组中第i个元素对应后缀字符串与第i-1个元素对应后缀字符串的最长公共前缀长度。

在步骤S202中,数据拥有端根据哈希函数,生成可验证数据结构,可验证数据结构包括第一累加值集合、第二累加值集合、第一哈希树和第二哈希树。

在本发明实施例中,数据拥有端生成可验证数据结构的步骤可包括:

(1)数据拥有端通过哈希函数计算文本串中每个后缀字符串的累加值,并将所有后缀字符串的累加值存储在第一累加值集合中。

具体地,通过预设的哈希函数对文本串的每个后缀字符串进行哈希迭代运算,以获取每个后缀字符串的累加值,哈希迭代运算的公式可为:

hai=h(pti||h(pti+1||h(...h(ptn-1||h(ptn))))),1≤i≤n,其中,i为相应后缀字符串的开始字符在文本串中的位置,hai为第i个后缀字符串的累加值,h为哈希函数,pti为位置i与位置i在文本串对应的字符构成的连接字符串,n为文本串的字符长度,pti的计算公式为pti=(i||-||τ[i]),“||”为预设的字符连接运算符,“-”为预设的连接字符,τ表示文本串。因此,第一累加值集合可表示为HA(τ)={hai|1≤i≤n}。

(2)数据拥有端根据后缀数组和第一累加值集合,生成多个后缀元组,根据后缀数组,构建第一哈希树并获取第一哈希树根节点的累加值。

具体地,将后缀数组和第一累加值集合中的累加值一一对应,组合得到多个后缀元组,再将后缀元组按照后缀数组的顺序,从下至上构建第一哈希树,并可获得该第一哈希树根节点的累加值。其中,后缀数组中第i个元素对应的后缀元组可表示为ti=<i,haSA[i],SA[i]>,haSA[i]为文本串中开始字符位置为SA[i]的后缀字符串的累加值,第一哈希树的叶子节点的累加值为对应后缀元组的累加值。

(3)数据拥有端根据后缀数组和最长公共前缀数组,生成多个匹配元组,通过哈希函数计算匹配元组集合中每个匹配元组的累加值,并将所有匹配元组的累加值存储在第二累加值集合中。

具体地,后缀数组和最长公共前缀数组一一对应进行组合,可得到多个匹配元组,该多个匹配元组包含了文本串与不同待匹配模板串进行匹配时所有可能出现的匹配位置。接着,采用哈希函数对每个匹配元组进行哈希迭代运算,以得到所有匹配元组对应的累加值。其中,匹配元组可表示为tli=<i,SA[i],LCP[i]>,1≤i≤n,哈希迭代运算的公式可为:

Hi=h(tli||h(tli+1||h(...h(tln-1||h(tln))))),1≤i≤n,其中,Hi为匹配元组tli对应的累加值。因此,第二累加值集合可表示为HL(LCP)={Hi|1≤i≤n}。

(4)数据拥有端根据第二累加值集合,构建第二哈希树并获取第二哈希树根节点的累加值。

具体地,将第二累加值集合按照一定顺序从下至上地构建第二哈希树,可获得该第一哈希树根节点的累加值。其中,第二哈希树叶子节点的累加值为对应匹配元组的累加值。

在步骤S203中,数据拥有端将查询数据结构和可验证数据结构给云服务器,并将哈希函数向数据访问端发布,将第一哈希树根节点和第二哈希树根节点的累加值设置为验证参数发送给数据访问端。

在本发明实施例中,数据拥有端通过上述方式对文本串进行预处理,得到查询数据结构和可验证数据结构,可有效减少云服务器的数据存储量并提高验证证据的获取效率,此外数据拥有端在对文本串预处理后得到的验证参数发送给数据访问端,使得数据访问段通过该固定大小的参数,即可完成匹配结果的验证过程,有效地提高了模式串匹配验证的效率。

如图3所示,步骤S103中云服务器根据文本串关联的查询数据结构和可验证数据结构,获取匹配成功的验证证据的步骤可包括:

在步骤S301中,获取待匹配模式串在文本串中的当前匹配位置,根据查询数据结构,获取预设数量个匹配元组,预设数量个匹配元组中包含待匹配模式串在文本串中所有匹配成功的匹配位置。

在本发明实施例中,可根据当前匹配位置和查询数据结构,查找出文本串中所有可以与待匹配模式串匹配成功的匹配位置,并通过匹配元组表示出来,这里的匹配位置是指与待匹配模式串进行匹配的后缀字符串中开始字符在文本串中的位置,预设数量为匹配次数进行加一操作后得到的数值。

在具体实施过程中,可先确定当前匹配位置在最长公共前缀数组中对应的下标,从该下标开始往前后两端搜索该最长公共前缀数组,将最长公共前缀数组中的最长公共前缀长度与待匹配模式串长度进行比较,当最长公共前缀长度不小于待匹配模式串长度时,获取该最长公共前缀长度在后缀数组中对应的数组元素,进而可得到预设数量个对应的匹配元组,匹配元组的表达公式可为tlj=<j,SA[j],LCP[j]>,start≤j≤end,其中start和end分别表示匹配元组下标的开始位置和结束位置。

在步骤S302中,根据当前匹配位置和待匹配模式串,在第一累加值集合中查找相关后缀字符串的累加值,并根据第一哈希树,获取用于验证待匹配模式串是否存在于文本串中的证据,并将证据设置为第一子证据。

在本发明实施例中,当前匹配位置可通过后缀数组中数组元素SA[i]进行表示,根据当前匹配位置和待匹配模式串的长度之和可确定相关后缀字符串的开始字符在文本串中的位置,因此相关后缀字符串的累加值可表示为haSA[i]+m,m为待匹配模式串的长度。在获取第一子证据时,可先在第一累加值集合中查找当前匹配位置所对应后缀字符串的累加值,以获取对应的后缀元组ti=<i,haSA[i],SA[i]>,接着,在第一哈希树中查找该后缀元组哈希累加值所对应的叶子节点,将该叶子节点到根节点的路径设置为第一验证证据,具体地,第一验证证据中包含该叶子节点到根节点路径上的结点以及这些结点的兄弟结点。

在步骤S303中,在第二累加值集合中查找预设数量个匹配元组中预设位置处匹配元组的累加值,并根据第二哈希树,获取用于验证预设数量个匹配元组中开始位置处匹配元组是否真实的证据,并将证据设置为第二子证据。

在本发明实施例中,预设位置为预设数量个匹配元组中结束位置的下一位置,所以预设位置处匹配元组的累加值可表示为Hend+1,在获取第二子证据的过程中,可先在第二累加值集合中查找开始位置处匹配元组的累加值,接着,在第二哈希树中查找该开始位置处匹配元组的累加值对应的叶子节点,将该叶子节点到第二哈希树根节点的路径设置为第二子证据,具体地,第二子证据可包括该路径上的结点和节点的兄弟结点。

在步骤S304中,根据当前匹配位置、预设数量个匹配元组、相关后缀字符串的累加值、第一子证据、预设位置处匹配元组的累加值以及第二子证据生成匹配成功的验证证据。

具体地,匹配成功的验证证据的表达公式可为:

pro(p)={i,SA[i],{tlj=<j,SA[j],LCP[j]>,start≤j≤end},haSA[i]+m,Hend+1,proofi,prooftl},其中,proofi为第一子证据,prooftl为第二字证据。

在本发明实施例中,云服务器根据文本串关联的查询数据结构和可验证数据结构,通过上述步骤获取匹配成功的验证证据,可有效地提高匹配成功的验证证据的获取效率。

在步骤S104中,数据访问端根据待匹配模式串、匹配成功的验证证据以及与文本串关联的验证参数,确定匹配成功的结果是否正确。

在本发明实施例中,数据访问端根据云服务发送过来的验证证据、待匹配模式串、数据终端预先发送的验证参数以及公开的哈希函数,完成验证匹配成功结果的验证过程,具体的验证步骤包括:

(1)根据待匹配模式串、哈希函数以及相关后缀字符串的累加值,计算当前匹配位置在文本串中所对应后缀字符串的累加值,并根据累加值、后缀数组、第一子证据以及第一哈希树根节点的累加值,确定当前匹配位置是否正确。

在本发明实施例中,当前匹配位置在文本串中与后缀字符串对应,表明该后缀字符串的开始字符在文本串的位置为当前匹配位置,计算该后缀字符串累加值的具体公式可为:ha'SA[i]=h(pt1'||h(pt'2||h(...h(pt'm||haSA[i])...))),

其中,pt'j的计算公式为pt'j=(SA[i]+j-1||-||p[j]),1≤j≤m,p为待匹配模式串。接着,将该后缀字符串的累加值ha'SA[i]与当前匹配位置SA[i]组合构成一个后缀元组,根据第一子证据和第一哈希树根节点的累加值,验证该后缀元组是否正确,当该后缀元组正确时,可确定当前匹配位置正确。

(2)根据待匹配模式串、哈希函数以及预设位置处匹配元组的累加值,计算预设数量个匹配元组中开始位置处匹配元组的累加值,并根据累加值、第二子证据以及第二哈希树根节点的累加值,确定预设数量个匹配元组包含的所有匹配位置中剩余匹配位置是否正确。

在本发明实施例中,预设数量个匹配元组中开始位置处匹配元组tlstart的累加值计算公式为:H'start=h(tlstart||h(tlstart+1||h(...h(tlend||Hend+1)...))),其中Hend+1为预设位置处匹配元组的累加值。接着,根据开始位置处匹配元组tlstart、第二子证据以及第二哈希树根节点的累加值,确定预设数量个匹配元组包含的所有匹配位置中剩余匹配位置是否正确。

(3)当确定当前匹配位置和剩余匹配位置正确时,确定匹配成功的结果正确。

优选地,当待匹配模式串与文本串在云服务器中匹配失败时,云服务器同样可获取到匹配失败的验证证据,并将匹配失败的结果和匹配失败的验证证据发送给数据访问端,数据访问端根据该匹配失败的验证证据,可验证该匹配失败的结果是否正确。

在本发明实施例中,云服务器获取匹配失败验证证据的步骤包括:

(1)当待匹配模式串与文本串匹配失败时,根据待匹配模式串在文本串中当前匹配失败的位置和后缀数组,分别获取第一后缀字符串和第二后缀字符串在文本串所对应的位置,第一后缀字符串和第二后缀字符串在后缀数组中位置前后相邻。

具体地,第一后缀字符串开始字符在文本串中的位置可为当前匹配失败的位置,根据不同后缀字符串在后缀数组中对应不同的数组元素,因此可根据第一后缀字符串在后缀数组中对应数组元素的位置,将下一位置数组元素对应的后缀字符串设置为第二后缀字符串。

(2)根据第一后缀字符串和待匹配模式串,获取文本串中第一相关位置处的字符,在第一累加值集合中查找第一相关位置的下一位置所对应后缀字符串的累加值,并根据第一哈希树,获取用于验证第一后缀字符串存在于文本串中的第三子证据。

在本发明实施例中,获取第一后缀字符串与待匹配模式串之间的最长公共前缀长度l1,在文本串中查找该第一后缀字符串中的第l1+1个字符,该字符即为第一相关位置处的字符,第一相关位置可表示为SA[i]+l1。第一相关位置的下一位置所对应后缀字符串的累加值可表示为haSA[i]+l1+1,在第一哈希树中查找该累加值对应的叶子节点,将该叶子节点到第一哈希树根节点的路径设置为第三子证据,具体地,第三子证据包括该路径上的结点和结点的兄弟结点。

(3)根据第二后缀字符串和待匹配模式串,获取文本串中第二相关位置处的字符,在第一累加值集合中查找第二相关位置的下一位置所对应后缀字符串的累加值,并根据第一哈希树,获取用于验证第二后缀字符串存在于文本串中的第四子证据。

在本发明实施例中,同上述步骤一样,获取第二后缀字符串与待匹配模式串之间的最长公共前缀长度l2,在文本串中查找该第二后缀字符串中的第l2+1个字符,该字符即为第二相关位置处的字符,第二相关位置可表示为SA[i]+l2。第二相关位置的下一位置所对应后缀字符串的累加值可表示为haSA[i]+l2+1,在第一哈希树中查找该累加值对应的叶子节点,将该叶子节点到第一哈希树根节点的路径设置为第四子证据,具体地,第四子证据包括该路径上的结点和结点的兄弟结点。

(5)根据当前匹配失败的位置、第一相关位置处的字符、第一相关位置的下一位置所对应后缀字符串的累加值、第三子证据、第二相关位置处的字符、第二相关位置的下一位置所对应后缀字符串的累加值和第四子证据,生成匹配失败的验证证据。

具体地,匹配失败的验证证据的表达公式可为:

其中,proofi'为第三子证据,proof'i+1为第四子证据。

(5)云服务器将匹配失败的结果和匹配失败的验证证据发送给数据访问端。在本发明实施例中,根据后缀数组、第一累加值集合以及第一哈希树,成功获取到匹配失败的验证证据,不仅有效地提高了验证证据获取的速率,而且有效地提高了验证证据的简洁度。

在本发明实施例中,数据访问端验证匹配失败的结果可包括下述步骤:

(1)数据访问端根据匹配失败的验证证据,确定第一后缀字符串和第二后缀字符串在后缀数组中的位置是否相邻。

(2)当第一后缀字符串与第二后缀字符串位置相邻时,将第一相关位置处的字符与待匹配模式串中第一预设位置处的字符进行比较,以确定第一后缀字符串是否小于待匹配模式串,将第二相关位置处的字符与待匹配字符串中第二预设位置处的字符进行比较,以确定第二后缀字符串是否大于待匹配模式串。

在本发明实施例中,第一预设位置的表达公式可为p[l1+1],第二预设位置的表达公式可为p[l2+1],其中p为待匹配模式串。

(3)当确定第一后缀字符串小于待匹配模式串、且第二后缀字符串大于待匹配模式串时,根据哈希函数、第一相关位置的下一位置所对应后缀字符串的累加值以及第二相关位置的下一位置所对应后缀字符串的累加值,分别计算第一后缀字符串、第二后缀字符串的累加值。

(4)根据第三子证据和第一哈希树根节点的累加值,确定第一后缀字符串是否存在于文本串中,根据第四子证据和第一哈希树根节点的累加值,确定第二后缀字符串是否存在于在文本串中。

(5)当确定第一后缀字符串和第二后缀字符串都存在于文本串中时,确定待匹配模式串与文本串匹配失败。

在本发明实施例中,在数据拥有端根据文本串构建查询数据结构,并采用哈希函数对文本串进行预处理得到可验证数据结构,通过该查询数据结构和可验证数据结构,不仅减少了云服务的数据存储量和数据运算量,而且提高了云服务器获取匹配结果和验证证据的效率,与此同时,数据拥有端发送给数据访问端固定大小的验证参数,有效地简化了数据访问端验证匹配结果的验证过程,大大地提高了模式串匹配的验证效率。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于一计算机可读取存储介质中,所述的存储介质,如ROM/RAM、磁盘、光盘等。

实施例二:

图6示出了本发明实施例二提供的一种基于云服务的模式串匹配验证装置的结构,为了便于说明,仅示出了与本发明实施例相关的部分,其中包括:

模式串获取模块61,用于预设云服务器接收到数据访问端的模式串匹配查询请求时,获取模式串匹配查询请求中的待匹配模式串;

模式串匹配模块62,用于云服务器将待匹配模式串与预先存储的文本串进行匹配;

证据获取模块63,用于当待匹配模式串在文本串中匹配成功时,云服务器根据文本串关联的查询数据结构和可验证数据结构,获取匹配成功的验证证据,并将匹配成功的结果和匹配成功的验证证据发送给数据访问端,可验证数据结构由数据拥有端通过预设的哈希函数对文本串进行预处理得到;以及

验证模块64,用于数据访问端根据待匹配模式串、匹配成功的验证证据以及与文本串关联的验证参数,确定匹配成功的结果是否正确。

在本发明实施例中,如图7所示,该模式串匹配验证装置还可以包括:

查询数据获取模块71,用于数据拥有端根据文本串,生成查询数据结构,查询数据结构包括文本串的后缀数组和最长公共前缀数组;

可验证数据获取模块72,用于数据拥有端根据哈希函数,生成可验证数据结构,可验证数据结构包括第一累加值集合、第二累加值集合、第一哈希树和第二哈希树;以及

数据拥有端发送模块73,用于数据拥有端将查询数据结构和可验证数据结构发送给云服务器,并将哈希函数向数据访问端发布,将第一哈希树根节点和第二哈希树根节点的累加值设置为验证参数发送给数据访问端。

优选地,可验证数据获取模块72包括:

第一哈希计算模块721,用于数据拥有端根据哈希函数,计算文本串中每个后缀字符串的累加值,并将所有后缀字符串的累加值存储在第一累加值集合中;

第一哈希树构建模块722,用于数据拥有端根据后缀数组和第一累加值集合,生成多个后缀元组,并根据后缀数组,构建第一哈希树并获取第一哈希树根节点的累加值;

第二哈希计算模块723,用于数据拥有端根据后缀数组和最长公共前缀数组,生成多个匹配元组,根据哈希函数,计算匹配元组集合中每个匹配元组的累加值,并将所有匹配元组的累加值存储在第二累加值集合中;以及

第二哈希树建立模块724,用于数据拥有端根据第二累加值集合,构建第二哈希树并获取第二哈希函数根节点的累加值。

在本发明实施例中,在数据拥有端根据文本串构建查询数据结构,并采用哈希函数对文本串进行预处理得到可验证数据结构,通过该查询数据结构和可验证数据结构,不仅减少了云服务的数据存储量和数据运算量,而且提高了云服务器获取匹配结果和验证证据的效率,与此同时,数据拥有端发送给数据访问端固定大小的验证参数,有效地简化了数据访问端验证匹配结果的验证过程,大大地提高了模式串匹配的验证效率。

在本发明实施例中,基于云服务的模式串匹配验证装置的各单元可由相应的硬件或软件单元实现,各单元可以为独立的软、硬件单元,也可以集成为一个软、硬件单元,在此不用以限制本发明。各单元的具体实施方式可参考前述实施例一中各步骤的描述,在此不再赘述。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1