数据可搜索加密和关键词搜索方法、系统及终端、设备与流程

文档序号:17161794发布日期:2019-03-20 00:50阅读:258来源:国知局
数据可搜索加密和关键词搜索方法、系统及终端、设备与流程

本发明属于可搜索加密技术领域,特别涉及一种数据可搜索加密和关键词搜索方法、系统及终端、设备。



背景技术:

随着互联网应用的发展,越来越多的用户常常通过在搜索页面中输入搜索关键词,并触发搜索操作来实现搜索。具体的,搜索页面获取到输入的搜索关键词和触发的搜索操作之后,将根据输入的搜索关键词罗列出相应的联想词,用户点击某一联想词将得到与该联想词相关的搜索结果,通过点击所期望查看的搜索结果方可浏览该搜索结果对应的详细信息。由于上述搜索过程需要依赖于用户所输入的多次操作方可得到用户期望的信息,具有搜索效率低的缺点。

在以往的sse研究中,关键词由数据文件中提取的关键词而来。关键词的内容和数量受关键词提取算法的限制,且是固定不变的。对关键词集进行修改操作时,需要重新提交或构建新的关键词集,这个过程增加了数据集构建的时间,同时也使操作较为麻烦。现有的关键词搜索方法过程大概如下:

step1、加密过程:用户使用密钥在本地对明文文件进行加密,并将其上传至服务器。

step2、陷门生成过程:具备检索能力的用户,使用密钥生成待查询关键词的陷门,要求陷门不能泄露关键词的任何信息。

step3、检索过程:服务器以关键词陷门为输入,执行检索算法,返回所有包含该陷门对应关键词的密文文件,要求服务器除了能知道密文文件是否包含某个特定关键词外,无法获得更多信息。

step4、解密过程:用户使用密钥解密服务器返回的密文文件,获得查询结果。

另外,davidcash等人提出了针对不同数据库大小,尤其是较大数据库时,一种安全高效的数据处理方案,可以高效和私密地搜索具有数百亿条记录关键字对的服务器加密数据库。他们的基本理论构造支持单关键词搜索,并提供渐近优化的服务器索引大小,完全并行搜索和最小泄漏。

上述这些方法中,由于关键词由关键词提取算法得到,所以关键词内容和数量受关键词提取算法的限制,是固定不变的。因此,可查询关键词有限,且对关键词集进行修改操作时,需要重新提交或构建新的关键词集,这个过程增加了数据集构建的时间,同时也使操作较为麻烦。



技术实现要素:

本发明的第一目的在于克服现有技术的缺点与不足,提供一种数据可搜索加密方法,该方法针对数据拥有者上传的数据文件及其摘要分别进行加密,同时生成关键词对应的字典,该方法能够使得使关键词搜索不仅仅通过字典,还可以通过摘要进行搜索,可以使得关键词的搜索效率更高。

本发明的第二目的在于提供一种数据可搜索加密系统。

本发明的第三目的在于提供一种终端。

本发明的第四目的在于提供一种基于上述数据可搜索加密方法实现的关键词搜索方法,该方法在搜索过程中可以对关键词进行自动更新,大大提高了关键词的搜索效率。

本发明的第五目的在于提供一种计算设备。

本发明的第一目的通过下述技术方案实现:一种数据可搜索加密方法,其步骤如下:

获取数据拥有者上传的数据文件;

提取出各数据文件的关键词;

对每个数据文件进行摘要提取,得到摘要文件;

根据各关键词与各数据文件之间的对应关系,通过加密算法进行数据处理后生成字典γ,其中字典γ中存储各关键词对应到各数据文件的标签以及各关键词对应到各数据文件的索引信息,其中针对于每一关键词,在字典γ中该关键词对应到各数据文件的标签和该关键词对应到各数据文件的索引信息为一一成对关系;

针对各数据文件进行加密得到加密数据文件;

针对各摘要文件进行加密得到加密后的摘要文件。

优选的,根据各关键词与各数据文件之间的对应关系,通过加密算法进行数据处理后生成字典γ的具体过程如下:

s11、建立一个空表l,为表l选取主密钥k;

s12、针对于每个关键词,获取到包括该关键词的各数据文件,并且通过主密钥k对该关键词生成一对子密钥k1,k2:

k1←f(k,1||ω);

k2←f(k,2||ω);

其中ω为关键词;

针对于每个关键词,对包括该关键词的各数据文件进行编号,得到对应各数据文件对应的文件号,并且对各文件号进行排序,得到各文件号的序号;

针对于每个关键词,采用密钥k1针对该关键词对应的各文件号依次生成标签,同时采用密钥k2针对该关键词对应的各文件号依次进行加密,将加密后的结果作为该关键词对应到数据文件的索引信息,得到标签索引对(li,di):

li←f(k1,i);

di←enc(k2,idi);

i=0,1,…,n-1;

其中li为采用密钥k1针对关键词ω对应的第i个文件号idi生成的标签;di为采用密钥k2加密关键词ω对应的第i个文件号idi后得到结果,将该结果作为该关键词对应到文件号为idi的数据文件的索引,n为包括关键词ω的数据文件的总数;

s13、针对于每个关键词,每得到一个标签索引对(li,di),将其按照字典γ顺序依次插入表l中;并且对每一个标签索引对(li,di)添加时间戳timei,得到包含(li,di,timei)的表l,通过该表l创建得到字典γ;其中timei的初始时间为加密完成各标签索引对(li,di)中索引信息di的时间。

优选的,获取到各摘要文件的过程具体如下:

首先通过文档摘要提取算法从数据文件中提取出摘要文件;然后以摘要对应的文件号为索引,将摘要存储在对应位置,并对剩余位置进行字符填充,形成一个摘要文件;

采用burrows-wheeler转换算法和fm索引技术对各摘要文件进行子串搜索加密,具体过程如下:

针对于摘要文件中不同的每个字符,分别创建链表;针对于各字符链表,其中每个节点存储元组为<nptr,addr>,nptr为指向该字符链表下一节点的指针,addr为处于摘要文件中某一位置的该字符在fm索引中的位置,其中该字符链表中不同节点存储元组中的addr分别为摘要文件中不同位置的该字符在fm索引中的位置;

针对于摘要文件中不同的每个字符,将各字符链表第一个节点即链表头的存储元组进行加密处理,得到:

其中<nptr1,addr1>为各字符链表第一个节点即链表头的存储元组,cm为摘要文件不同的字符中第m个字符,y为摘要文件中不同的字符的总个数;k′为副密钥,fk′(cm)表示通过副密钥k′针对字符cm进行加密;

针对于摘要文件中各个不同的字符,首先进行加密处理,将各不同字符加密处理后的数据作为链表索引,得到链表索引集,并且分别将各不同字符对应的各链表索引映射到各个不同字符链表的链表头,得到各个不同字符的链表索引和链表头之间的映射关系;其中摘要文件中各个不同的字符加密处理后为:

k为主密钥,fk(cm)表示通过主密钥k针对字符cm进行加密;fk′(cm)表示通过副密钥k′针对字符cm进行加密。

本发明的第二目的通过下述技术方案实现:一种数据可搜索加密系统,包括:

数据文件获取单元,用于获取数据拥有者上传的数据文件;

关键词提取单元,用于提取出各数据文件的关键词,

摘要提取单元,用于对每个数据文件进行摘要提取,得到摘要文件;

字典生成单元,根据各关键词与各数据文件之间的对应关系,通过加密算法进行数据处理后生成字典γ,其中字典γ中存储各关键词对应到各数据文件的标签以及各关键词对应到各数据文件的索引信息,其中针对于每一关键词,该关键词对应到各数据文件的标签和该关键词对应到各数据文件的索引信息为一一成对关系;

数据文件加密单元,用于针对各数据文件进行加密得到加密数据文件;

摘要文件加密单元,针对各摘要文件进行子串搜索加密得到加密后的摘要文件。

本发明的第三目的通过下述技术方案实现:一种终端,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现本发明第一目的所述的数据可搜索加密方法。

本发明的第四目的通过下述技术方案实现:一种关键词搜索方法,步骤如下:

步骤x1、首先获取到本发明第一目的所述的数据可搜索加密方法得到的字典γ、加密后的数据文件以及加密后的摘要文件;

在接收到用户发出的需要进行搜索的各关键词时,首先通过搜索字典γ确定是否有加密后的数据文件中包括该关键词;若是,则将对应加密后的数据文件作为查询结果返回给用户进行解密;

若否,则进入步骤x2;

步骤x2、在加密后的摘要文件集中针对需要进行搜索的各关键词进行子串搜索;

若通过子串搜索后,在摘要文件中查询到该关键词,则将上述摘要文件对应的加密后的数据文件作为查询结果返回给用户;在用户确认为正确的情况下,则确定上述作为查询结果的对应数据文件包括该关键词,计算该关键词对应上述数据文件的标签以及对应数据文件的索引信息,并且添加到字典γ中,实现对字典γ的更新;

若通过子串搜索后,在摘要文件中未能搜索到,则返回搜索失败的结果给用户。

优选的,所述步骤x1中,针对于需要进行搜索的各关键词,通过搜索字典γ确定是否有加密后的数据文件中包括该关键词的具体过程如下:

步骤x11、针对于用户需要进行搜索的每一关键词,根据用户发出的主密钥k对该关键词生成一对子密钥k′1,k′2:

k′1←f(k,1||ω′);

k′2←f(k,2||ω′);

其中ω′为用户需要进行搜索的关键词;

步骤x12、针对于需要进行搜索的每一关键词,遍历数据文件对应的文件号序号,通过子密钥k′1生成该关键词对应到各文件号的数据文件的标签:

li′←f(k′1,i′);i′=0,1,2,…i;

其中i′为遍历的数据文件对应的文件号序号,i为遍历的数据文件对应文件序号的最大值;li′为关键词ω′对应到文件号序号为i′的数据文件的标签;

步骤x13、针对于需要进行搜索的每一关键词,在字典γ中搜索是否存在上述步骤x12生成的该关键词对应到各文件号的数据文件的标签li′;

若否,则进入步骤x2;

若是,则在字典γ中获取到与该标签成对的索引信息,然后通过该关键词的子密钥k′2解密索引信息,通过解密后的索引信息获取到对应加密后的数据文件,以作为查询结果返回给用户进行解密;同时,将字典γ中存储的该标签索引对的时间戳更新为该关键词的子密钥k′2解密索引信息完成的时间;

其中,在字典γ中获取到与该标签成对的索引信息为:

di′←get(γ,li′);

其中di′为在字典γ获取到与标签li′成对的索引信息;

其中,通过该关键词的子密钥k′2得到解密后的索引信息为:

di←dec(k′2,di′);

其中di为di′通过关键词ω′的子密钥k′2解密后的索引信息,其中解密后的索引信息di即为包括关键词ω′的数据文件的文件号。

优选的,所述步骤x2中,在加密后的摘要文件集中采用burrows-wheeler转换算法和fm索引技术进行子串搜索,具体过程如下:

步骤x21、针对于需要进行搜索的关键词ω′,生成关键词查询令牌tkt,s:

tkt,s=f(k,ω′[1…m])=f(k,ω′[1]),f(k,ω′[2]),…f(k,ω′[m]),f(k′,ω′[m]);

其中,ω′[1],ω′[2],…,ω′[m]为需要进行搜索的关键词ω′的各字符,m为关键词ω′的字符总数;k′为副密钥,k′=f(k,2),k为主密钥;

步骤x22、针对于需要进行搜索的关键词ω′的各字符ω′[m],m=1,2,3,…m,首先对其进行加密得到:然后从链表索引集中寻找密文为的链表索引,通过各字符ω′[m]的链表索引和链表头之间的映射关系,获取到各字符ω′[m]的链表;

步骤x23、针对于需要进行搜索的关键词ω′的最后一个字符ω′[m],将字符ω′[m]的链表中的每个节点映射到加密fm元组:

其中对应处于fm的f列的数据;

其中对应为处于fm的l列的数据;

其中e(posj)对应为处于fm的sa列第j行的数据,posj表示sa列第j行的数据对应的字符在摘要文件中的位置密文,n为fm的总行数;

其中,为处于fm第f列第j行的数据对应的字符,为处于fm第f列第j行的数据对应的字符的位置序号;为处于fm第l列第j行的数据对应的字符,为处于fm第l列第j行的数据对应的字符的位置序号;

针对于ω′[m]的链表中每一字节所映射到的每一加密fm元组:

首先采用fk(ω′[m])针对处于fm的f列的数据即进行异或操作,实现解密,得到

然后采用作为密钥解密处于fm的l列的数据第一部分的元素得到和处于fm的l列的数据第二部分的元素进行异或操作,得到异或操作结果,然后进入步骤x24;

步骤x24、针对于上一步骤得到的每一异或操作结果,在fm的f列中搜索数据为该异或操作结果的行,然后获取到该行的fm元组,寻找到节点映射到该fm元组的链表,从而获取到该链表对应的字符cx,作为当前搜索到的字符;其中x为当前在fm的f列中搜索数据的次数;进入步骤x25;

步骤x25、判断步骤x24中获取到的各字符cx中是否有和字符ω′[m-x]相同的字符;

若是,则判断当前在fm的f列中搜索数据的次数x是否等于m-1;若是,则结束子串搜索,并且子串搜索成功,对应摘要文件中包括需要进行搜索的关键词ω′;若否,则进入步骤x26;

若否,则结束子串搜索,并且返回子串搜索失败的结果,即对应摘要文件中不包括关键词ω′;

步骤x26、针对于步骤x24获取到的和字符ω′[m-x]相同的字符cx,得到步骤x24获取该字符cx时所获取到的各fm元组,并且对于各fm元组进行以下操作:

首先采用fk(cx)针对处于fm的f列的数据即进行异或操作,实现解密,得到

然后采用作为密钥解密处于fm的l列的数据第一部分的元素得到和处于fm的l列的数据第二部分的元素进行异或操作,得到异或操作结果;然后进入步骤x24。

优选的,将字典γ设定为固定长度的字典,所述步骤x2中,实现对字典γ的更新过程如下:

当需要添加新的关键词对应数据文件的标签以及对应数据文件的索引信息到字典γ时,即当需要添加新的关键词的标签索引对到字典γ时,若字典当前已经存储满标签索引对,则将新的关键词的标签索引对替换掉字典γ中时间戳最小的标签索引对,当新的关键词的标签索引对为多个时,则替换掉字典γ中时间戳最小的多个标签索引对。

本发明的第五目的通过下述技术方案实现:一种计算设备,包括处理器以及用于存储处理器可执行程序的存储器,所述处理器执行存储器存储的程序时,实现本发明第四目的关键词搜索方法。

本发明相对于现有技术具有如下的优点及效果:

(1)本发明数据可搜索加密方法中,首先获取数据拥有者上传的数据文件;提取出各数据文件的关键词;并且对各数据文件进行摘要提取得到摘要文件;根据各关键词词和各数据文件之间的对应关系生成字典γ,针对各数据文件进行加密得到加密数据文件;同时针对各摘要文件进行子串搜索加密得到加密后的摘要文件;上述方法获取到的字典γ、加密数据文件和加密摘要文件上传供搜索时,能够使得关键词搜索不仅仅通过字典,还可以通过摘要文件进行搜索,可以使得关键词的搜索效率更高。

(2)本发明关键词搜索方法中,首先获取到上述数据可搜索加密方法得到的字典γ、加密后的数据文件以及加密后的摘要文件;在接收到用户发出的需要进行搜索的各关键词,首先通过搜索字典γ确定是否有加密后的数据文件中包括该关键词;若是,则将对应加密后的数据文件作为查询结果返回给用户进行解密;若否,则进一步在加密后的摘要文件集中针对需要进行搜索的各关键词进行子串搜索;若通过子串搜索后,在摘要文件中查询到该关键词,则将上述摘要文件对应的加密后的数据文件作为查询结果返回给用户,并且计算该关键词对应上述数据文件的标签以及对应数据文件的索引信息,添加到字典γ中。由上述可知,本发明中,通过字典γ搜索不到对应关键词时,则表示该关键词对应标签不在字典中,即关键词不在最初生成字典的关键词集合中,这种情况下,本发明通过子串搜索的方式在摘要文件中搜索关键词,当在摘要文件中搜索到该关键词时,将关键词对应标签和数据文件索引信息添加到字典γ中,那么下次搜索时,将可以通过字典γ搜索到对应关键词;本发明这种结合子串搜索方式,在搜索过程中更新关键词词典的方法,可以使得关键词字典的内容更加地准确和灵活,不受关键词提取算法限制,大大提高了关键词的搜索效率。

(3)本发明关键词搜索方法中,将字典γ设定为长度的字典γ,当需要添加新的关键词对应数据文件的标签以及对应数据文件的索引信息到字典γ时,即当需要添加新的关键词的标签索引对到字典γ时,若字典当前已经存储满标签索引对,则将新的关键词的标签索引对替换掉字典γ中时间戳最小的标签索引对,当新的关键词的标签索引对为多个时,则替换掉字典γ中时间戳最小的多个标签索引对。本发明上述可更新关键词字典采用了类似快表的反馈机制,可以避免不正确的查询记录造成字典不断扩大影响内存,在固定的字典大小内,字典会将使用频率小的关键词进行覆盖与更新。

附图说明

图1是本发明数据可搜索加密方法流程图。

图2是本发明关键词搜索方法流程图。

图3是本发明链表索引、链表和fm映射图。

图4是本发明数据可搜索加密和关键词搜索方法总体框图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

实施例1

本实施例公开了一种数据可搜索加密方法,如图1所示,步骤如下:

步骤s1、获取数据拥有者上传的数据文件;

步骤s2、提取出各数据文件的关键词;同时对每个数据文件进行摘要提取,得到摘要文件;其中,在本实施例中,获取到各摘要文件的过程具体如下:

首先通过文档摘要提取算法从数据文件中提取出摘要文件;然后以摘要对应的文件号为索引,将摘要存储在对应位置,并对剩余位置进行字符填充,形成一个摘要文件。

步骤s3、根据各关键词与各数据文件之间的对应关系,通过加密算法进行数据处理后生成字典γ,其中字典γ中存储各关键词对应到各数据文件的标签以及各关键词对应到各数据文件的索引信息,其中针对于每一关键词,在字典γ中该关键词对应到各数据文件的标签和该关键词对应到各数据文件的索引信息为一一成对关系;上述根据各关键词与各数据文件之间的对应关系,通过加密算法进行数据处理后生成字典γ的具体过程如下:

s31、建立一个空表l,为表l选取主密钥k;

s32、针对于每个关键词,获取到包括该关键词的各数据文件,并且通过主密钥k对该关键词生成一对子密钥k1,k2:

k1←f(k,1||ω);

k2←f(k,2||ω);

其中ω为关键词;

步骤s33、首先针对于每个关键词,对包括该关键词的各数据文件进行编号,得到对应各数据文件对应的文件号,并且对各文件号进行排序,得到各文件号的序号;然后针对于每个关键词,采用密钥k1针对该关键词对应的各文件号依次生成标签,同时采用密钥k2针对该关键词对应的各文件号依次进行加密,将加密后的结果作为该关键词对应到数据文件的索引信息,得到标签索引对(li,di):

li←f(k1,i);

di←enc(k2,idi);

i=0,1,…,n-1;

其中li为采用密钥k1针对关键词ω对应的第i个文件号idi生成的标签;di为采用密钥k2加密关键词ω对应的第i个文件号idi后得到结果,将该结果作为该关键词对应到文件号为idi的数据文件的索引,n为包括关键词ω的数据文件的总数;

s34、针对于每个关键词,每得到一个标签索引对(li,di),将其按照字典γ顺序依次插入表l中;并且对每一个标签索引对(li,di)添加时间戳timei,得到包含(li,di,timei)的表l,通过该表l创建得到字典γ;其中timei的初始时间为加密完成各标签索引对(li,di)中索引信息di的时间;

步骤s4、针对各数据文件进行加密得到加密数据文件;针对各摘要文件进行加密后得到加密后的摘要文件。

在本实施例本步骤中,采用burrows-wheeler转换算法和fm索引技术对各摘要文件进行子串搜索加密,其中转换burrows-wheeler转换(bwt)算法借助每个字符的熵转换数据流。简而言之,数据流s被转换为编码w,使得压缩算法提供高的压缩率,转换的步骤大致如下:首先,算法将终止标志$附加到输入的字符串s后,通过改变标志$的序列建立矩阵w。每次迭代中改变的序列作为新的行附加到矩阵w中。最后,w的各行按字典顺序升序排列。其中,bwt算法转换后得到的数据通过lf映射技术映射到fm中,lf映射技术取bwt转换的第一列f和最后一列l,通过算法的迭代过程重建原始字符串s。从f和l每列的第一个元素,l作为f列的索引。每次l列的元素都被添加到一个后进先出栈中。l列当前位置的值将会作为下一循环中f列的索引。其中,在第一次迭代,指针同时指向f、l的第一个位置。由此找到最后一个位置f[7]=s。当前l的字符(即s)添加到栈d中。下一次迭代时,当前l的字符就是下一个f列索引。字符i入栈。当l处为$时,程序结束。算法弹出栈d中所有的元素,得到初始字符串s。fm索引技术中,fm由三个列数组组成。第一个是lf映射中的f列,第二个是l列,这对应了bwt(s)。最后一个是后缀数组sa。sa包括了每列i,子串在原始字符串s中的位置,为经过bwt转换后获得的w矩阵的ith行。

本实施例子串搜索加密的具体过程如下:

步骤s41、针对于摘要文件中不同的每个字符,分别创建链表;针对于各字符链表,其中每个节点存储元组为<nptr,addr>,nptr为指向该字符链表下一节点的指针,addr为处于摘要文件中某一位置的该字符在fm索引中的位置,其中该字符链表中不同节点存储元组中的addr分别为摘要文件中不同位置的该字符在fm索引中的位置;例如某摘要文件有10个位置中存在字符t,那么建立得到的字符t的链表中,从第1个节点到第10个节点的存储元组中的addr分别为摘要文件10个位置的字符t在fm索引中的位置。

针对于摘要文件中不同的每个字符,将各字符链表第一个节点即链表头的存储元组进行加密处理,得到:

其中<nptr1,addr1>为各字符链表第一个节点即链表头的存储元组,cm为摘要文件不同的字符中第m个字符,y为摘要文件中不同的字符的总个数;k′为副密钥,fk′(cm)表示通过副密钥k′针对字符cm进行加密。

步骤s42、针对于摘要文件中各个不同的字符,首先进行加密处理,将各不同字符加密处理后的数据作为链表索引,得到链表索引集,并且分别将各不同字符对应的各链表索引映射到各个不同字符链表的链表头,得到各个不同字符的链表索引和链表头之间的映射关系;其中摘要文件中各个不同的字符加密处理后为:

k为主密钥,fk(cm)表示通过主密钥k针对字符cm进行加密;fk′(cm)表示通过副密钥k′针对字符cm进行加密。

如图3所示,为本实施例上述步骤获取到的链表索引llset、链表ll和fm映射图,每个链表索引分别映射到一个链表的链表头,即通过链表索引可以获取到对应的链表;各链表中的每一节点分别对应映射到fm表的每一组fm元组,即fm表中的每一行,通过链表和fm之间的映射关系,可以通过fm元组获取到对应链表。图3中的表示字符cm对应的链表中第i个字节存储的元组,i=1,2,3…。

本实施例还公开了一种数据可搜索加密系统,包括:

数据文件获取单元,用于获取数据拥有者上传的数据文件;

关键词提取单元,用于提取出各数据文件的关键词,

摘要提取单元,用于对每个数据文件进行摘要提取,得到摘要文件;

字典生成单元,根据各关键词与各数据文件之间的对应关系,通过加密算法进行数据处理后生成字典γ,其中字典γ中存储各关键词对应到各数据文件的标签以及各关键词对应到各数据文件的索引信息,其中针对于每一关键词,该关键词对应到各数据文件的标签和该关键词对应到各数据文件的索引信息为一一成对关系;

数据文件加密单元,用于针对各数据文件进行加密得到加密数据文件;

摘要文件加密单元,针对各摘要文件进行子串搜索加密得到加密后的摘要文件。

本实施例还公开了一种终端,包括处理器以及用于存储处理器可执行程序的存储器,处理器执行存储器存储的程序时,实现本实施例上述数据可搜索加密方法。在本实施例中,如图4所示,终端可以是一台计算机,该计算机作为客户端供数据拥有将数据文件上传到其中,然后由计算机执行本实施例上述数据可搜索加密方法,获取到字典γ、加密后的数据文件以及加密后的摘要文件,并且计算机可以将上述获取到的字典γ、加密后的数据文件以及加密后的摘要文件上传到服务器,以供授权用户(拥有系统下发的主密钥的用户)通过关键词搜索到相应的数据文件。

实施例2

本实施例公开了一种关键词搜索方法,如图2所示,步骤如下:

步骤x1、首先获取由实施例数据可搜索加密方法得到的字典γ、加密后的数据文件以及加密后的摘要文件;

在接收到用户发出的需要进行搜索的各关键词时,首先通过搜索字典γ确定是否有加密后的数据文件中包括该关键词;若是,则将对应加密后的数据文件作为查询结果返回给用户进行解密;若否,则进入步骤x2;

其中在本实施例中,针对于需要进行搜索的各关键词,通过搜索字典γ确定是否有加密后的数据文件中包括该关键词的具体过程如下:

步骤x11、针对于用户需要进行搜索的每一关键词,根据用户发出的主密钥k对该关键词生成一对子密钥k′1,k′2:

k′1←f(k,1||ω′);

k′2←f(k,2||ω′);

其中ω′为用户需要进行搜索的关键词;其中本实施例中的函数f()表示散列函数。主密钥k和需要进行搜索的各关键词由用户同时发送;

步骤x12、针对于需要进行搜索的每一关键词,遍历数据文件对应的文件号序号,通过子密钥k′1生成该关键词对应到各文件号的数据文件的标签:

li′←f(k′1,i′);i′=0,1,2,…i;

其中i′为遍历的数据文件对应的文件号序号,i为遍历的数据文件对应文件序号的最大值,i+1即为预设的包括需要进行搜索的该关键词的数据文件的总数;li′为关键词ω′对应到文件号序号为i′的数据文件的标签;

步骤x13、针对于需要进行搜索的每一关键词,在字典γ中搜索是否存在上述步骤x12生成的该关键词对应到各文件号的数据文件的标签li′;

若否,表示通过字典γ搜索不到对应包括需要进行搜索的关键词的数据文件,此时进入步骤x2。

若是,则在字典γ中获取到与该标签成对的索引信息,然后通过该关键词的子密钥k′2解密索引信息,通过解密后的索引信息获取到对应加密后的数据文件,以作为查询结果返回给用户进行解密;同时,将字典γ中存储的该标签索引对的时间戳更新为该关键词的子密钥k′2解密索引信息完成的时间;

其中,在字典γ中获取到与该标签成对的索引信息为:

di′←get(γ,li′);

其中di′为在字典γ获取到与标签li′成对的索引信息;

其中,通过该关键词的子密钥k′2得到解密后的索引信息为:

di←dec(k′2,di′);

其中di为di′通过关键词ω′的子密钥k′2解密后的索引信息,其中解密后的索引信息di即为包括关键词ω′的数据文件的文件号;

步骤x2、在加密后的摘要文件集中针对需要进行搜索的各关键词进行子串搜索;

若通过子串搜索后,在摘要文件中查询到该关键词,则将上述摘要文件对应的加密后的数据文件作为查询结果返回给用户;在用户确认为正确的情况下,则确定上述作为查询结果的对应数据文件包括该关键词,计算该关键词对应上述数据文件的标签以及对应数据文件的索引信息,并且添加到字典γ中,实现对字典γ的更新。其中在本实施例中,将字典γ设定为固定长度的字典γ,当需要添加新的关键词对应数据文件的标签以及对应数据文件的索引信息到字典γ时,即当需要添加新的关键词的标签索引对到字典γ时,若字典当前已经存储满标签索引对,则将新的关键词的标签索引对替换掉字典γ中时间戳最小的标签索引对,当新的关键词的标签索引对为多个时,则替换掉字典γ中时间戳最小的多个标签索引对。

若通过子串搜索后,在摘要文件中未能搜索到,则返回搜索失败的结果给用户。

本实施例上述步骤x2中,加密后的摘要文件集中对应采用burrows-wheeler转换算法和fm索引技术进行子串搜索,具体过程如下:

步骤x21、针对于需要进行搜索的关键词ω′,生成关键词查询令牌tkt,s:

tkt,s=f(k,ω′[1…m])=f(k,ω′[1]),f(k,ω′[2]),…f(k,ω′[m]),f(k′,ω′[m]);

其中,ω′[1],ω′[2],…,ω′[m]为需要进行搜索的关键词ω′的各字符,m为关键词ω′的字符总数;k′为副密钥,k′=f(k,2),k为主密钥;

步骤x22、针对于需要进行搜索的关键词ω′的各字符ω′[m],m=1,2,3,…m,首先对其进行加密得到:然后从链表索引集中寻找密文为的链表索引,通过各字符ω′[m]的链表索引和链表头之间的映射关系,获取到各字符ω′[m]的链表;

步骤x23、针对于需要进行搜索的关键词ω′的最后一个字符ω′[m],将字符ω′[m]的链表中的每个节点映射到加密fm元组:

其中对应处于fm的f列的数据;

其中对应为处于fm的l列的数据;

其中e(posj)对应为处于fm的sa列第j行的数据,posj表示sa列第j行的数据对应的字符在摘要文件中的位置密文,n为fm的总行数;

其中,为处于fm第f列第j行的数据对应的字符,为处于fm第f列第j行的数据对应的字符的位置序号;为处于fm第l列第j行的数据对应的字符,为处于fm第l列第j行的数据对应的字符的位置序号;

针对于ω′[m]的链表中每一字节所映射到的每一加密fm元组:

首先采用fk(ω′[m])针对处于fm的f列的数据即进行异或操作,实现解密,得到

然后采用作为密钥解密处于fm的l列的数据第一部分的元素得到和处于fm的l列的数据第二部分的元素进行异或操作,得到异或操作结果,然后进入步骤x24;

步骤x24、针对于上一步骤得到的每一异或操作结果,在fm的f列中搜索数据为该异或操作结果的行,然后获取到该行的fm元组,根据如图3所示的链表各节点和fm表中fm元组的映射关系,寻找到对应节点映射到该fm元组的链表,从而获取到该链表对应的字符cx,作为当前搜索到的字符;其中x为当前在fm的f列中搜索数据的次数;进入步骤x25;

步骤x25、判断步骤x24中获取到的各字符cx中是否有和字符ω′[m-x]相同的字符;

若是,则判断当前在fm的f列中搜索数据的次数x是否等于m-1;若是,则结束子串搜索,并且子串搜索成功,对应摘要文件中包括需要进行搜索的关键词ω′;若否,则进入步骤x26;

若否,则结束子串搜索,并且返回子串搜索失败的结果,即对应摘要文件中不包括关键词ω′;

步骤x26、针对于步骤x24获取到的和字符ω′[m-x]相同的字符cx,得到步骤x24获取该字符cx时所获取到的各fm元组,并且对于各fm元组进行以下操作:

首先采用fk(cx)针对处于fm的f列的数据即进行异或操作,实现解密,得到

然后采用作为密钥解密处于fm的l列的数据第一部分的元素得到和处于fm的l列的数据第二部分的元素进行异或操作,得到异或操作结果;然后进入步骤x24。

本实施例还公开了一种关键词搜索系统,包括:

数据文件获取模块,用于获取到由实施例的数据可搜索加密方法得到的字典γ、加密后的数据文件以及加密后的摘要文件;

关键词接收模块,用于接收用户发出的需要进行搜索的各关键词;

关键词第一搜索模块,用于针对于需要进行搜索的各关键词,通过搜索字典γ确定是否有加密后的数据文件中包括该关键词;

关键词第二搜索模块,用于针对于需要进行搜索的各关键词,在数据文件集未能搜索到的情况下,在加密后的摘要文件集中进行子串搜索;

查询结果返回单元,用于将关键词第一搜索模块和关键词第二搜索模块的查询结果返回给用户;

字典γ更新单元,用于根据关键词第二搜索模块查询结果更新字典γ,具体为:在用户确认关键词第二搜索模块的查询结果为正确的情况下,确定上述作为查询结果的对应数据文件包括该关键词,计算该关键词对应上述数据文件的标签以及对应数据文件的索引信息,并且添加到字典γ中。

本实施例还公开了一种计算设备,包括处理器以及用于存储处理器可执行程序的存储器,处理器执行存储器存储的程序时,实现本实施例上述关键词搜索方法。

在本实施例中,如图4所示,上述计算设备包括客户端和服务器,其中客户端为计算机或者其他智能终端,客户端是面向用户的,用户通过客户端输入需要搜索的关键词以及主密钥。客户端接收到用户输入的关键词和主密钥后,执行本实施例上述关键词搜索方法的步骤x11生成关键词的一对子密钥,并且发送到服务器中,服务器接收到子密钥后,执行本实施上述关键词搜索方法的步骤x12和步骤x13,以确定是否能够通过搜索字典在加密后的数据文件查找到需要进行搜索的关键词ω′;其中服务器执行本实施例上述关键词搜索方法的步骤x12和步骤x13的代码如下:

for(i′=0;i′!=⊥;i′++){

li′←f(k′1,i′);

di′←get(γ,li′);//计算li′后即可在字典γ中找到包含标签li′的标签索引对,得到对应的索引信息di′;

di←dec(k′2,di′);//di′解密得到包括关键词ω′的数据文件的文件号;

refresh(time);//更新关键词ω′对应标签在字典γ中标签索引对所对应的时间戳;

当通过搜索字典γ不能搜索到数据文件中包括关键词ω′时,此时服务器将会执行上述关键词搜索方法的步骤x21至x26,即在摘要文件集中搜索是否包括关键词ω′的摘要文件,若搜索成功,返回搜索到的加密的数据文件给客户端,并且将关键词ω′对应的的标签索引添加到字典γ,以对字典γ进行更新。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

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