一种字符串匹配方法和系统的制作方法

文档序号:9420308阅读:274来源:国知局
一种字符串匹配方法和系统的制作方法
【技术领域】
[0001] 本发明设及有线\无线网络领域,特别设及网络协议分析中一种字符串匹配方法 和系统。
【背景技术】
[0002] 在数据通信过程中,分析通信协议帖头/报文头结构、提取识别网络协议及网络 文本内容是处理截获通信信号后一个重要的后续工作;随着各种网络业务种类快速增长和 越来越多的安全事件发生,迫切需要提高网络协议识别与分析的效率与准确性,其工作量 也急剧增大。传统的协议分析字符串匹配方法已经不能满足目前日益爆炸式网络应用的要 求。
[0003] 另外,无论是进行网络信息的捜索,还是进行网络安全的防护,都离不开对网络比 特流的挖掘与分析。模式匹配算法在文本挖掘、信息检索、模式识别、图像处理W及网络安 全等领域中被普遍采用。快速、准确的字符串模式匹配算法一直是研究人员追求的目标。
[0004] 目前,已有一些学者对字符串的快速匹配方法进行了大量的研究,Boyer和Moore 两人在KMP算法的启发下,提出了一种经典的字符串快速匹配算法BM度oyer-Moore)算 法;BMH度oyer-Moore化rspool)算法是在BM的基础上做的改进;Sunday算法是Daniel M.Sunday提出的一种比BM算法捜索速度更快的算法;另外还有QS(如ick-Search)算法、 多模式双向快速字符串匹配方法等。现有研究在协议字符串快速匹配方面已经取得了较好 的实际应用效果。但是,目前方法还存在计算量较大、没有并行考虑串匹配的问题。

【发明内容】
阳0化]为了解决上述问题,或者至少部分地解决上述问题,本发明提供了一种字符串匹 配方法和系统。
[0006] 依据本发明的一个方面,本发明提供了一种字符串匹配方法,包括:
[0007] 将被匹配字符串分解成预先设定数目的若干块数据块;
[0008] 将所述各数据块与模式串进行快速匹配,直到找出所有相互匹配的字符串或达到 停止条件;
[0009] 对所述各数据块的结合处进行匹配处理。
[0010] 其中,被匹配字符串分解得到的所述各数据块长度相等,且远远大于模式串的长 度。
[0011] 其中,所述将所述各数据块与模式串进行快速匹配的方法包括:
[0012] 保持BM算法的好后缀不变,结合改进后的QS算法,同时进行字符串的快速匹配; [001引其中,利用BM算法的好后缀:当出现错误匹配时,从不匹配点向左看,判断已匹配 的子字符串在模式串中是否还有重复,若已匹配的子字符串在模式串中有重复,则直接将 模式串中重复的部分与已匹配的子字符串对齐;
[0014] 利用改进后的QS算法:被匹配字符串T[tlt2t3…tn],当前匹配点为T[t],当出 现错误匹配时,判断T[t+m]、T[t+m+1]是否在模式串中,若都在,则移动距离为I,然后利用BM算法的好后缀进行匹配;若仅有T[t+m+l]在模式串中,则让模式串与T[t+m,t巧却1-1] 进行匹配,使得匹配跳过m+1步;否则让模式串与T[t+m+l,t巧却1]进行匹配,使得匹配跳 过m+2步;其中m为模式串的长度;
[0015] 比较所述两种算法得到的模式串移动距离,W其中较大的值作为模式串本次的移 动距离。
[0016] 其中,所述对所述各数据块的结合处进行匹配处理包括:
[0017] 对所述各数据块的结合处进行散列化处理,计算其散列码,将得到的散列码分别 与模式串的散列码对比;若对比不成功,说明该结合处不存在模式串;若对比成功,说明该 结合处存在模式串,且对比成功的散列码对应的子串就是与模式串匹配的字符串。
[0018] 其中,所述各数据块的结合处是长度等于2*m的字符串,分别由相邻的两块所述 数据块的结尾m个字符和开头m个字符组成,每个结合处字符串的散列码有m-2个;其中, m为模式串的长度。
[0019] 依据本发明的另一方面,本发明提供了一种字符串匹配系统,包括:
[0020] 分解单元,用于将被匹配字符串分解成预先设定数目的若干块数据块;
[0021] 数据块匹配单元,用于将所述各数据块与模式串进行快速匹配,直到找出所有相 互匹配的字符串或达到停止条件;
[0022] 结合处匹配单元,用于对所述各数据块的结合处进行匹配处理。
[0023] 其中,所述分解单元,具体用于将被匹配字符串分解,得到的所述各数据块长度相 等,且远远大于模式串的长度。
[0024] 其中,所述数据块匹配单元包括:
[00巧]BM匹配模块,用于利用BM算法的好后缀,当出现错误匹配时,从不匹配点向左看, 判断已匹配的子字符串在模式串中是否还有重复,若已匹配的子字符串在模式串中有重 复,则直接将模式串中重复的部分与已匹配的子字符串对齐; 阳0%] QS匹配模块,用于利用改进后的QS算法,被匹配字符串T[tlt2t3…tn],当前匹 配点为T[t],当出现错误匹配时,判断T[t+m]、T[t+m+1]是否在模式串中,若都在,则移动 距离为1,然后利用BM的好后缀进行匹配;若仅有T[t+m+l]在模式串中,则让模式串与 T[t+m,t巧却1-1]进行匹配,使得匹配跳过m+1步;否则让模式串与T[t+m+l,t巧却1]进行 匹配,使得匹配跳过m+2步;其中m为模式串的长度;
[0027] 移动距离判定模块:比较BM匹配模块和QS匹配模块中模式串的移动距离,W其中 较大的值作为模式串本次的移动距离。
[0028] 其中,所述结合处匹配单元包括:
[0029] 散列码计算模块,用于对所述各数据块的结合处做散列化处理,计算其散列码;W 及计算模式串的散列码;
[0030] 散列码比较模块,用于将各结合处的散列码分别与模式串的散列码对比;若对比 不成功,说明该结合处不存在模式串;若对比成功,说明该结合处存在模式串,对比成功的 散列码对应的子串就是与模式串匹配的字符串。
[0031] 其中,所述各数据块的结合处是长度等于2*m的字符串,分别由相邻的两块所述 数据块的结尾m个字符和开头m个字符组成,每个结合处字符串的散列码有m-2个;其中, m为模式串的长度。
[0032] 本发明实施例的有益效果是:在字符串与模式串匹配前,先对字符串进行分解,将 一个大串分解成若干个较小的字符块进行并行分析处理,可W大大提升字符串匹配效率。 在对每个小字符块内部进行匹配时,保持BM算法的好后缀不变,结合改进后的QS算法,同 时进行字符串的快速匹配,从而跳过尽可能多的字符,减少匹配次数,降低匹配过程中的 "过匹配"现象,提高算法效率。对各数据块结合处进行散列化处理,有效防止"漏匹配"现 象发生,降低字符串"漏匹配"率问题。在对结合处字符串进行处理时,由于字符串长度为 2*m,每个结合处只需要计算m-2个散列码;因此,在整体匹配前进行一次散列化处理,得到 相应的散列码。该法在结合处短字符串情况下优势非常明显,整体计算量小,适合对实时性 处理要求高的应用场景。
【附图说明】
[0033] 图1为本发明提供的一种字符串匹配方法的流程图;
[0034] 图2为本发明中数据块内部匹配过程的流程图;
[0035] 图3为本发明中数据块结合处字符串散列化处理过程的流程图;
[0036] 图4为本发明提供的一种字符串匹配系统的结构示意图。
【具体实施方式】
[0037] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方 式作进一步地详细描述。
[0038] 为了清楚阐述本发明提出的字符串匹配方法,先定义一些相关的定义和概念:
[0039] 定义1 :待匹配字符串T--表示为T[t
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1