加密数据搜索方法和装置的制造方法

文档序号:9922043阅读:982来源:国知局
加密数据搜索方法和装置的制造方法
【技术领域】
[0001]本发明涉及计算机技术领域,特别是涉及一种加密数据搜索方法和装置。
【背景技术】
[0002]为了数据的安全性,通常用来保存数据的数据库会采用加密方案,其中加密方案通常有整体加密、内容加密或两者结合。对数据库数据,通常会有搜索需求。而如果数据库数据进行了内容加密,则无法完成在数据库里面的关键字匹配。传统技术中,通常需要将数据库数据读入内存,读入内存后数据会进行解密动作,这样则可以在内存中进行关键字匹配以完成搜索。然而,传统的这种搜索方式,由于都要将数据库数据读入内存,对于数据量较大的情况,搜索效率非常慢。虽然对大量数据也可以采用分批处理,但数据全部返回所花费的时间仍较长,并不能很好的解决搜索效率慢的问题。

【发明内容】

[0003]基于此,有必要针对上述技术问题,提供一种能提高搜索效率的加密数据搜索方法和装置。
[0004]—种加密数据搜索方法,所述方法包括:
[0005]获取搜索字符;
[0006]获取数据库中与搜索字符匹配的字符索引,所述字符索引以明文形式存储;
[0007]获取与所述匹配的字符索引对应的结果集,将所述结果集进行缓存;
[0008]在缓存中进行关键字匹配,得到所述结果集中与所述搜索字符匹配的搜索结果。
[0009]—种加密数据搜索装置,所述装置包括:
[0010]字符获取模块,用于获取搜索字符;
[0011]索引匹配模块,用于获取数据库中与搜索字符匹配的字符索引,所述字符索引以明文形式存储;
[0012]缓存模块,用于获取与所述匹配的字符索引对应的结果集,将所述结果集进行缓存;
[0013]关键字匹配模块,用于在缓存中进行关键字匹配,得到所述结果集中与所述搜索字符匹配的搜索结果。
[0014]上述加密数据搜索方法和装置,由于字符索引以明文形式存储,可直接进行匹配,在搜索时先获取数据库中与搜索字符匹配的字符索引,进一步获取与匹配的字符索引对应的结果集,将结果集进行缓存,然后在缓存中进行关键字匹配,得到结果集中与搜索字符匹配的搜索结果。相对于现有技术,由于先进行了一次字符索引的匹配,只缓存字符索引匹配的数据,减少了数据库数据读入内存的时间,从而提高了加密数据的搜索效率。
【附图说明】
[0015]图1为一个实施例中加密数据搜索方法的流程图;
[0016]图2为另一个实施例中加密数据搜索方法的流程图;
[0017]图3为一个实施例中的联系人搜索界面的示意图;
[0018]图4为图3所示实施例中展示搜索结果的界面示意图;
[0019]图5为一个实施例中加密数据搜索装置的结构框图;
[0020]图6为另一个实施例中加密数据搜索装置的结构框图;
[0021]图7为一个实施例中终端的结构示意图。
【具体实施方式】
[0022]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0023]如图1所示,在一个实施例中,提供了一种加密数据搜索方法,该方法包括:
[0024]步骤102,获取搜索字符。
[0025]本实施例中,可提供一搜索界面,该搜索界面中包含搜索输入框,通过搜索输入框接收用户输入的关键字,并提取关键字对应的搜索字符。接收到的关键字包含中文、英文或者中英文组合。比如,关键字为英文,则搜索字符为对应的英文字符;关键字为中文,则搜索字符为对应的中文拼音字符。
[0026]步骤104,获取数据库中与搜索字符匹配的字符索引。
[0027]字符索引是指存储数据时将数据中的字符作为数据的索引进行存储,这里的数据即为字段。优选的,可将字段中的前缀字符作为索引。这里的前缀字符可以是字段的第一个字符或者前面至少两个字符。本实施例中,字符索引以明文形式存储,因此在数据库中可直接进行匹配。
[0028]进一步的,获取到搜索字符后,可将搜索字符中的前缀字符作为参数在数据库的字符索引中进行搜索,以得到与搜索字符匹配的字符索引。这里匹配的字符索引是指前缀字符与搜索字符的前缀字符相同的字符索引。
[0029]步骤106,获取与匹配的字符索引对应的结果集,建立结果集缓存。
[0030]本实施例中,数据库中存储的数据以数据中的前缀字符为索引,也就是一个字符索弓I对应包含该字符索引的多条字段。例如,字符索引为“ a”,对应存储的字段包括“ ab ”、“abc”、“ac”等。获取到数据库中与搜索字符匹配的字符索引后,进一步的可获取数据库中与匹配的字符索引对应的这些数据,即结果集中。将结果集进行缓存,也就是读入内存,数据读入内存后即可进行解密。
[0031]步骤108,在缓存中进行关键字匹配,得到结果集中与搜索字符匹配的搜索结果。
[0032]由于数据读入内存后即可进行解密,则在缓存中可直接进行关键字匹配。具体的,结果集与搜索字符匹配的搜索结果可以是包含搜索字符的字段,或者与搜索字符模糊匹配的字段,依据与搜索字符的匹配程度对搜索结果进行排序,匹配程度越高,则搜索结果越靠
、广.刖。
[0033]本实施例中,由于在数据库中字符索引以明文形式存储,可直接进行匹配,在搜索时先获取数据库中与搜索字符匹配的字符索引,进一步获取与匹配的字符索引对应的结果集,将结果集进行缓存,然后在缓存中进行关键字匹配,得到结果集中与搜索字符匹配的搜索结果。相对于现有技术,由于先进行了一次字符索引的匹配,只缓存字符索引匹配的数据,减少了数据库数据读入内存的时间,从而提高了加密数据的搜索效率。
[0034]此外,字符索引使用字段中的前缀字符,虽然在数据库中以明文形式存储了前缀字符,但只有前缀字符基本很难获知具体内容,牺牲了很小的安全性,在提高了搜索效率的同时并不会对数据的安全性构成影响。且由于在匹配时,先匹配字符索引,通过索引的方式进行搜索,也能提高加密数据的搜索效率。
[0035]在一个实施例中,字符索引为字段的前缀字符。则步骤102中获取数据库中与搜索字符的前缀字符匹配的字符索引。本实施例中,字段的前缀字符优选为字段的第一个字符,也就是首字符。当然也可以是字段的前面至少两个字符。具体前缀字符为字段的前面多少个字符可根据具体的搜索场景确定。
[0036]在一个实施例中,在获取数据库中与搜索字符匹配的字符索引的步骤之前,还包括:检测结果集缓存是否为空,若是,则进入获取数据库中与搜索字符匹配的字符索引的步骤;否则,在缓存中搜索与搜索字符匹配的搜索结果。
[0037]进一步的,在一个实施例中,在缓存中搜索与搜索字符匹配的搜索结果的步骤包括:检测缓存中是否存在与搜索字符匹配的前缀字符,若是,则执行在缓存中进行关键字匹配,得到结果集中与搜索字符匹配的搜索结果的步骤;否则,进入步骤104获取数据库中与搜索字符匹配的字符索引的步骤。
[0038]在一个实施例中,缓存中保存了前缀字符和对应的包含前缀字符的字段。本实施例中,缓存中保存的前缀字符是指匹配过的字符索引,对应包含该前缀字符的字段为从数据库读入到内存中的与匹配的字符索引对应的字段。由于缓存中保存了之前匹配过的结果集,因此在进行匹配时,可先检测结果集缓存中是否为空,若不为空,则进一步检测缓存中是否存在与搜索字符匹配的前缀字符,如果存在,则表明搜索字符之前搜索过,缓存中有之前的搜索结果,可直接从缓存中进行关键字匹配,无需再将结果集进行缓存,进一步提高了加密数据的搜索效率。
[0039]如图2所示,在一个实施例中,提供了一种加密数据搜索方法,该方法包括:
[0040]步骤202,获取搜索字符。
[0041]步骤204,检测缓存是否为空,若是,则进入步骤206,否则进入步骤212。
[0042]本实施例中,缓存中保存了一个二维表,该二维表中记录了匹配过的前缀字符和对应的从数据库读入内存的包含该前缀字符的字段。
[0043]例如,二维表中记录了如下数据:
[0044]{
[0045]“A”:[ “Abc”,“auf”]
[0046]“B,,:[ “Bbc,,,“bwfV,,]
[0047]}
[0048]其中,“A”和“B”为前缀字符,本例子中为字段的首字符,对应保存了包含首字符的字段。
[0049]步骤206,检测缓存中是否存在与搜索字符匹配的前缀字符,若是,则进入步骤210,否则进入步骤208。
[0050]本实施例中,可检测缓存中保存的二维表中是否存在与搜索字符的前缀字符相同的前缀字符,如果存在,则表明该搜索字符的前缀字符之前匹配过,直接在结果集缓存中进行关键字匹配;如果不存在,则需要重新将与搜索字符匹配的前缀字符对应的一条记录读入内存,该条记录保存了匹配的前缀字符和包含前缀字符的字段。
[0051]步骤208,获取数据库中与搜索字符匹配的字符索引。
[0052]本实施例中,字符索引为字段的前缀字符,也就是将字段的前缀字符作为索引,且前缀字符以明文形式存储,可以直接与搜索字符进行关键字匹配。具体的,以搜索字符的前缀字符为参数在数据库中进行搜索,得到前缀字符与搜索字符的前缀字符相同的索引。
[0053]步骤210,获取与匹配的字符索引对应的结果集,建立结果集缓存。
[0054]本实施例中,得到与搜索字符匹配的字符索引后,则可直接获取数据库中与该匹配的字符索引对应的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1