一种字符串匹配方法及装置的制造方法
【技术领域】
[0001]本发明涉及模式匹配领域,尤其涉及一种字符串匹配方法及装置。
【背景技术】
[0002]字符串匹配是在一个大的目标字符串数据库中搜索出某个给定模式字符串位置的过程。字符串匹配应用较广泛,例如:在入侵检测系统中,为了对网络系统的运行状态进行监视,发现各种攻击企图、攻击行为或者攻击结果,保证系统资源的机密性和可用性,需要对获取的网络数据包进行检测是否存在入侵的非法数据,首先将针对一类数据包的所有已知的入侵行为的模式字符串分别放在模式字符串库中,对入侵的非法数据的检测,可以通过字符串匹配,确定获取的网络数据包的字符串中是否存在模式字符串库中的模式字符串,如果存在,表示存在入侵行为。
[0003]目前,现有的字符串匹配的常用的方法如下:
[0004]针对一个特定的模式字符串,从待匹配的目标字符串的第一个字符开始,逐个比对连续的字符与模式字符串的位置相同的字符是否相同,并且,在比对的过程中,当目标字符串与模式字符串中的前一对字符相同时,再比对下一对字符是否相同,如果目标字符串与模式字符串中的最后一对字符相同,即目标字符串与模式字符串中的每对字符均相同,表示该模式字符串在该目标字符串中存在,如果在比对的过程中,目标字符串与模式字符串中的一对字符不相同,则确定不相同的该对字符中的属于目标字符串的字符,并从目标字符串的该字符开始,采用与上述相同的方式,逐个比对连续的字符与模式字符串的位置相同的字符是否相同,直到确定该模式字符串在该目标字符串中存在,或者将目标字符串的所有字符比对完毕。
[0005]例如:目标字符串A=ababae,模式字符串B=abae,采用上述方案,将模式字符串B与目标字符串A的字符逐个进行比对,当比对到第四个字符时,e古b,则从目标字符串A的第四个字符b开始继续与模式字符串B的每个字符逐个进行比对。
[0006]上述字符串匹配方法,由于当目标字符串与模式字符串中的一对字符不相同时,确定不相同的该对字符中的属于目标字符串的字符,并从目标字符串的该字符开始,继续逐个比对连续的字符与模式字符串的位置相同的字符是否相同,以上述字符串A、B为例,当模式字符串B与目标字符串A的第四个字符比对不相同时,从目标字符串A的第四个字符开始,继续逐个比对连续的字符与模式字符串的位置相同的字符是否相同,但如果从目标字符串的第三个字符开始逐个比对连续的字符与模式字符串的位置相同的字符,则目标字符串A与模式字符串B中的每对字符均相同,因此这种字符串匹配方法的准确度低。
【发明内容】
[0007]本发明实施例提供一种字符串匹配方法及装置,用以解决现有技术中存在字符串匹配方法的准确度低的问题。
[0008]本发明实施例提供一种字符串匹配方法,包括:
[0009]确定模式字符串首字符在待匹配的目标字符串中存在的各位置;
[0010]当所述各位置中存在满足预设条件的位置时,确定所述模式字符串在所述目标字符串中存在,其中,对于满足预设条件的位置,从所述目标字符串的满足预设条件的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同的字符均相同。
[0011]采用本发明实施例提供的方法,由于在对待匹配的目标字符串中确定是否存在模式字符串时,首先确定模式字符串首字符在待匹配的目标字符串中存在的各位置,避免了目标字符串中与模式串首字符相同的字符位置可能未进行字符比对的问题,提高了字符串匹配的准确度。
[0012]进一步的,确定一个位置是否满足所述预设条件,具体包括:
[0013]针对该位置,比对从所述目标字符串的该位置的字符开始连续的字符与所述模式字符串的位置相同的字符是否相同;
[0014]当从所述目标字符串的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同字符均相同,确定该位置满足所述预设条件。
[0015]进一步的,确定一个位置是否满足所述预设条件,具体包括:
[0016]针对该位置,比对从所述目标字符串的该位置的下一个字符开始连续的字符与所述模式字符串的第二个字符开始位置相同的字符是否相同;
[0017]当从所述目标字符串的该位置的下一个字符开始,所述目标字符串与所述模式字符串中第二个字符串开始的每对位置相同的字符均相同,确定该位置满足所述预设条件。
[0018]进一步的,确定模式字符串首字符在待匹配的目标字符串中存在的各位置,具体包括:
[0019]将模式字符串首字符与待匹配的目标字符串中的每个字符进行比对;
[0020]将所述目标字符串中与所述首字符相同的字符所在的各位置,确定为所述首字符在所述目标子符串中存在的各位直。
[0021]本发明实施例还提供了一种入侵检测方法,包括:
[0022]获取网络数据包中的字符串,作为待匹配的目标字符串;
[0023]确定模式字符串首字符在待匹配的目标字符串中存在的各位置;
[0024]当所述各位置中存在满足预设条件的位置时,确定发生入侵行为,其中,对于满足预设条件的位置,从所述目标字符串的满足预设条件的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同的字符均相同。
[0025]本发明实施例提供一种字符串匹配装置,包括:
[0026]第一确定单元,用于确定模式字符串首字符在待匹配的目标字符串中存在的各位置;
[0027]第二确定单元,用于当所述各位置中存在满足预设条件的位置时,确定所述模式字符串在所述目标字符串中存在,其中,对于满足预设条件的位置,从所述目标字符串的满足预设条件的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同的字符均相同。
[0028]采用本发明实施例提供的装置,由于在对待匹配的目标字符串中确定是否存在模式字符串时,首先确定模式字符串首字符在待匹配的目标字符串中存在的各位置,避免了目标字符串中与模式串首字符相同的字符位置可能未进行字符比对的问题,提高了字符串匹配的准确度。
[0029]进一步的,所述第二确定单元,具体用于针对一个位置,比对从所述目标字符串的该位置的字符开始连续的字符与所述模式字符串的位置相同的字符是否相同;当从所述目标字符串的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同字符均相同,确定该位置满足所述预设条件。
[0030]进一步的,所述第二确定单元,具体用于针对该位置,比对从所述目标字符串的该位置的下一个字符开始连续的字符与所述模式字符串的第二个字符开始位置相同的字符是否相同;当从所述目标字符串的该位置的下一个字符开始,所述目标字符串与所述模式字符串中第二个字符串开始的每对位置相同的字符均相同,确定该位置满足所述预设条件。
[0031]进一步的,所述第一确定单元,具体用于将模式字符串首字符与待匹配的目标字符串中的每个字符进行比对;将所述目标字符串中与所述首字符相同的字符所在的各位置,确定为所述首字符在所述目标字符串存在中的各位置。
[0032]本发明实施例还提供了一种入侵检测装置,包括:
[0033]获取单元,用于获取网络数据包中的字符串,作为待匹配的目标字符串;
[0034]位置确定单元,用于确定模式字符串首字符在待匹配的目标字符串中存在的各位置;
[0035]入侵确定单元,用于当所述各位置中存在满足预设条件的位置时,确定发生入侵行为,其中,对于满足预设条件的位置,从所述目标字符串的满足预设条件的该位置的字符开始,所述目标字符串与所述模式字符串中的每对位置相同的字符均相同。
[0036]本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
【附图说明】
[0037]附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
[0038]图1为本发明实施例提供的字符串匹配方法的流程图;
[0039]图2为本发明实施例1提供的字符串匹配方法的流程图;
[0040]图3为本发明实施例2提供的入侵检测方法的流程图;
[0041]图4为本发明实施例3提供的字符串匹配装置的结构示意图;
[0042]图5为本发明实施例4提供的入侵检测装置的结构示意图。
【具体实施方式】
[0043]为了给出提高字符串匹配的准确度的实现方案,本发明实施例提供了一种字符串匹配方