一种基于字符串的快速匹配识别方法和装置制造方法及图纸

技术编号:21771800 阅读:20 留言:0更新日期:2019-08-03 21:35
本发明专利技术涉及计算机技术领域,提供了一种基于字符串的快速匹配识别方法和装置。其中方法包括确定字符串中存在动态变化的一个或者多个字符位,以及相应字符串中的静态字符位;根据所述字符串中的静态字符位的内容信息和所述一个或者多个动态字符位,更新字符串映射库。本发明专利技术将其中动态变化的字符位进行了标定,并可以通过在常规的字典树的数组中增设例如第257位,用于存储对应所述动态变化的字符位的下一级数组的链接信息,从而极大的简化了字典树的冗余程度。

A Fast Matching Recognition Method and Device Based on Character String

【技术实现步骤摘要】
一种基于字符串的快速匹配识别方法和装置
本专利技术涉及计算机
,特别是涉及一种基于字符串的快速匹配识别方法和装置。
技术介绍
深度包检测技术(DeepPacketInspect,简写为:DPI)技术是一种基于应用层的流量检测和控制技术,当IP数据包、TCP或UDP数据流通过基于DPI技术的带宽管理系统时,该系统通过深入读取IP包载荷的内容来对OSI七层协议中的应用层信息进行重组,从而得到整个应用程序的内容,然后按照系统定义的管理策略对流量进行整形操作。在DPI技术中,对网络数据报文做应用识别和恶意流量分析时,通常会搜集到报文负载前n个字节中某些字节的特征,例如:腾讯QQ的网络数据报文中就会在报文指定位置出包含QQ两个字节;然后生成特定的规则库,最后通过一个匹配引擎来将规则和数据包做匹配。然而,在实际操作过程中却会遇到,由于n个字节中存在某个字节不确定,无法通过自动机(Aho-Corasickautomation,简写为:AC)算法建立状态机来做匹配,所以一般会一条一条规则去遍历匹配是否命中。遍历规则在规则数量少的情况下可行,但在规则数量级上去之后,匹配的性能就会非常的低,匹配速率会相当的慢。这样会带来计算资源极大程度上的浪费,而现有技术中却没有针对此种情况的简洁、高效的解决手段。专利权申请号为CN201210132834.9的专利文档公开了一种多模式字符串匹配方法和装置。该方法包括:将多个模式串,按其各自的字符组成顺序,沿树结构的根节点向下,将每个字符写入一个节点中,生成一个决策树结构;将待匹配的主串沿所述决策树向下进行匹配。本专利技术的技术方案,能够实现多模式字符串的精确匹配,同时根据子节点对应的哈希值查找该子节点,决策树的宽度改变并不会影响字符串匹配的CPU时间开销,该算法的时间开销只取决于决策树的平均深度,与模式串的数量无关。对于模式串较多的字符串匹配,该算法能大量降低CPU的时间开销,提高应用的响应速度。但是,该专利中不支持字符串中包含的未确定字符的匹配的情况。专利权申请号:CN201310744154.7的专利文档公开了一种基于非确定有限自动机的字符串搜索方法,包括构造非确定有限自动机NFA并为非确定有限自动机设定状态变量;在所述非确定有限自动机中载入匹配表达式,并按照有向图运算符转换规则,将所述非确定有限自动机中的匹配表达式转换为有向图;根据所述状态变量中的状态位置,对进入所述非确定有限自动机的字符串中的字符开始匹配;若所述字符匹配成功则根据所述有向图中该位置所指向的最终位置更新所述状态变量,从所述更新的状态变量中的位置开始对下一字符进行匹配,直到获得符合所述匹配表达式的字符串或有字符匹配失败则匹配完成;当所述匹配完成时,并将所述状态变量置为开始位置。该专利是通过类似“((A*B|AC)D)”的逻辑运算符进行字符串匹配,该专利中的NFA算法是支持abc*cd,并且abc和cd中间不确定的字符*个数不限的情况,因此,相比较本专利技术所提出的应用场景,采用NFA算法虽然和一般的AC算法一样可以解决本专利技术所涉及的技术问题,但是,其各自因为AC算法自身实现过于固化和单板,以及NFA算法自身的适用灵活性过大,无法实现本专利技术所提出应用场合下的资源有效利用和计算性能的提高。
技术实现思路
本专利技术要解决的技术问题是在进行固定长度为n的字符串匹配识别时,相应的字符串中包含一个或者多个不确定字节,然而,上述字符串仍旧对应着同一个识别结果时,现有的AC算法会对于所述一个或者多个不确定字节仍然设定0-255的匹配位,并且相应一个或者多个不确定字节中0-255的匹配结果都对应着上述一个识别结果,此时会带来计算量上的浪费;这种情况下,现有的非确定有限自动机NFA算法是基于转移函数来实现当前输入与转移对象之间的切换,并且最终抵达终止状态(接受状态),因此,同样需要对上述一个护着多个不确定字节设置相应的转移函数,因此,相比较AC而言采用NFA算法并不能针对本专利技术所提出的应用场景中问题带来任何计算资源的节约和计算性能的提高。本专利技术采用如下技术方案:第一方面,本专利技术提供了一种基于字符串的快速匹配识别方法,包括:确定字符串中存在动态变化的一个或者多个字符位,以及相应字符串中的静态字符位;根据所述字符串中的静态字符位的内容信息和所述一个或者多个动态字符位,更新字符串映射库;其中,所述字符串映射库中对应于所述一个或者多个动态字符位,相应的以预设的附加字符位进行标定。优选的,所述字符串映射库包括一个或者多个数组阵列,所述数组阵列具体由一个或者多个数组对应字符排列顺序,以层级方式排列构成;其中,数组的级数与字符串中相应字符数量相对应;每一个数组包含数量上与完整字符个数相一致的数组单元,所述预设的附加字符位增设在每一个数组的最后字符位之后;其中,所述数组单元用于存储与之关联的下一级数组的地址。优选的,完整字符个数的数组单元具体包括对应0x00-0xFF的总共256个数组单元,则所述附加字符对应设置为数组中的第257数组单元,其中,各数组单元用于存储其下一级数组的地址信息或者用于存储跳出当前数组阵列得到匹配结果的相应信息。优选的,用于存储跳出当前数组阵列得到匹配结果的相应信息,具体包括:对应每一字符串的数组阵列的最后一级数组中存储有跳转地址链接,所述跳转地址链接用于获取与所述字符串相匹配的解析结果;或者,对应每一字符串的数组阵列的最后一级数组中存储有与所述字符串相匹配的解析结果。优选的,字符串映射库已经存储有第一字符串,此时,在字符串映射库中导入新增的第二字符串,具体包括:对于字符串首字符相同的第一字符串和第二字符串,将第一字符串的第一级数组复用给所述第二字符串;对于第一字符串和第二字符串之间存在差异的第i个字符位,则在第一字符串的数组阵列中,位于相应第i级数组所在链路,新增一条数组来对应第二字符串中第i个字符位内容;从而相对于第i-1级数组,形成了两条第i级数组的下级链路。优选的,在获取到一条第三字符串,需要通过所述字符串映射库,对于所述第三字符串所代表的信息进行解析时,所述方法还包括:根据所述第三字符串的首字符位的内容,在字符串映射库的数组阵列中匹配出第一级数组中记录信息与所述第三字符串的首字符位的内容一致的一个或者多个候选数组阵列;依次根据所述第三字符串的后续字符位的内容,筛选所述一个或者多个候选数组阵列,得到第三字符串对应的解析结果。优选的,所述依次根据所述第三字符串的后续字符位的内容,筛选所述一个或者多个候选数组阵列,得到第三字符串对应的解析结果,具体包括:将后续字符位设定为静态字符位进行匹配,若未匹配得到唯一的结果,则选择性的将后续字符位设定为动态字符位,并将调整后的后续字符位进行匹配,直到匹配到唯一的结果,或者,抵达跳出匹配循环条件后,反馈未匹配成功的消息给操作人员。优选的,所述选择性的将后续字符位设定为动态字符位,具体包括:从上一轮匹配过程中,最后失配的字符位调整为动态字符位,并以上一轮失配时,所述新调整为动态字符位的前一字符位所对应的数组为起始,进行当前轮的匹配过程;若还出现下一个字符位失配,则重复上述调整过程,并完成整个字符串的匹配过程;其中,对于同一字符位,若在其调整为动态字符位后,仍然未匹配成功,则本文档来自技高网
...

【技术保护点】
1.一种基于字符串的快速匹配识别方法,其特征在于,包括:确定字符串中存在动态变化的一个或者多个字符位,以及相应字符串中的静态字符位;根据所述字符串中的静态字符位的内容信息和所述一个或者多个动态字符位,更新字符串映射库;其中,所述字符串映射库中对应于所述一个或者多个动态字符位,相应的以预设的附加字符位进行标定;所述字符串映射库包括一个或者多个数组阵列,所述数组阵列具体由一个或者多个数组对应字符排列顺序,以层级方式排列构成;其中,数组的级数与字符串中相应字符数量相对应;每一个数组包含数量上与完整字符个数相一致的数组单元,所述预设的附加字符位增设在每一个数组的最后字符位之后;其中,所述数组单元用于存储与之关联的下一级数组的地址;字符串映射库已经存储有第一字符串,此时,在字符串映射库中导入新增的第二字符串,具体包括:对于字符串首字符相同的第一字符串和第二字符串,将第一字符串的第一级数组复用给所述第二字符串;对于第一字符串和第二字符串之间存在差异的第i个字符位,则在第一字符串的数组阵列中,位于相应第i级数组所在链路,新增一条数组来对应第二字符串中第i个字符位内容;从而相对于第i‑1级数组,形成了两条第i级数组的下级链路。...

【技术特征摘要】
1.一种基于字符串的快速匹配识别方法,其特征在于,包括:确定字符串中存在动态变化的一个或者多个字符位,以及相应字符串中的静态字符位;根据所述字符串中的静态字符位的内容信息和所述一个或者多个动态字符位,更新字符串映射库;其中,所述字符串映射库中对应于所述一个或者多个动态字符位,相应的以预设的附加字符位进行标定;所述字符串映射库包括一个或者多个数组阵列,所述数组阵列具体由一个或者多个数组对应字符排列顺序,以层级方式排列构成;其中,数组的级数与字符串中相应字符数量相对应;每一个数组包含数量上与完整字符个数相一致的数组单元,所述预设的附加字符位增设在每一个数组的最后字符位之后;其中,所述数组单元用于存储与之关联的下一级数组的地址;字符串映射库已经存储有第一字符串,此时,在字符串映射库中导入新增的第二字符串,具体包括:对于字符串首字符相同的第一字符串和第二字符串,将第一字符串的第一级数组复用给所述第二字符串;对于第一字符串和第二字符串之间存在差异的第i个字符位,则在第一字符串的数组阵列中,位于相应第i级数组所在链路,新增一条数组来对应第二字符串中第i个字符位内容;从而相对于第i-1级数组,形成了两条第i级数组的下级链路。2.根据权利要求1所述的基于字符串的快速匹配识别方法,其特征在于,完整字符个数的数组单元具体包括对应0x00-0xFF的总共256个数组单元,则所述附加字符对应设置为数组中的第257数组单元,其中,各数组单元用于存储其下一级数组的地址信息或者用于存储跳出当前数组阵列得到匹配结果的相应信息。3.根据权利要求2所述的基于字符串的快速匹配识别方法,其特征在于,用于存储跳出当前数组阵列得到匹配结果的相应信息,具体包括:对应每一字符串的数组阵列的最后一级数组中存储有跳转地址链接,所述跳转地址链接用于获取与所述字符串相匹配的解析结果;或者,对应每一字符串的数组阵列的最后一级数组中存储有与所述字符串相匹配的解析结果。4.根据权利要求1所述的基于字符串的快速匹配识别方法,其特征在于,在获取到一条第三字符串,需要通过所述字符串映射库,对于所述第三字符串所代表的信息进行解析时,所述方法还包括:根据所述第三字符串的首字符位的内容,在字符串映射库的数组阵列中匹配出第一级数组中记录信息与所述第三字符串的首字符位的内容一致的一个或者多个候选数组阵列;依次根据所述第三字符串的后续字符位的内容,筛选所述一个或者多个候选数组阵列,得到第三字符串对应的解析结果。5.根据权利要求4所述的基于字符串的快速匹配识别方法,其特征在于,所述...

【专利技术属性】
技术研发人员:李小坤
申请(专利权)人:武汉绿色网络信息服务有限责任公司
类型:发明
国别省市:湖北,42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1