本发明涉及字符匹配领域,特别是一种字符串匹配方法及系统。
背景技术:
在国民经济和社会各领域信息化深入发展的同时,相应的安全保障问题也更为凸显。目前,网络攻击已被作为世界面临的主要安全威胁之一。网络窃密、个人隐私被滥用、敌对势力利用网络进行意识形态渗透等问题日益突出,信息系统受到破坏后,对国家安全、社会秩序和公众利益造成的损害也越严重。近几年来,apt攻击已经成为业界关注和讨论的热点。apt攻击一般是指针对政府机关、研究机构或特定企业的连续不间断入侵渗透,利用软硬件缺陷和社会工程学原理进行的持续攻击。它以其独特的攻击方式和手段,使得传统的安全防御工具已无法进行有效的防御,模式匹配速度逐渐成为误用入侵检测系统的瓶颈,寻求一种快速有效的模式匹配算法成为当前研究的热点。针对以上问题提供一种改进的字符串匹配的方法及系统是很有必要的。
技术实现要素:
本发明的目的在于克服现有技术的不足,提供一种字符串匹配方法及系统使算法更简单,算法需要的空间资源更少,计算速度更快。
本发明的目的是通过以下技术方案来实现的:一种字符串匹配方法,它包括以下步骤:
s1输入文本字符串:将所有文本字符串输入长度为n;
s2输入模式串:将要与文本字符串进行匹配的模式串输入长度为m,m小于等于n;
s3定义数组;
s4字符串匹配。
进一步限定,所述的定义数组包括:
增加一个新的移动数组;
定义一个预制数组。
进一步限定,所述的增加一个新的移动数组是根据字符在模式串中所出现的次数来确定新的移动数组长度。
进一步限定,在字符在模式串中所出现的次数小于2时,新的移动数组长度为m;反之新的移动数组长度为m-f-1,f表示字符在模式串中倒数第二次出现的位置。
进一步限定,所述的定义预制数组具体分为如下步骤:
s31判断字符是否在模式串中出现;
s32若没有出现,该字符在模式串中位置为-1,即预制数组长度为0;
s33若出现,判定字符最后出现在模式中的位置;
s34字符在模式串中位置为0,即预制数组长度为1;字符在模式串中位置为e,即预制数组长度为e-1,0<<e<<m。
进一步限定,所述的字符串匹配具体分为如下步骤:
s41当匹配开始比较输入文本字符串的k-m+1至k的子串是否与输入模式串的0至m-1的子串,从右至左依次检查判断是否完全匹配,匹配成功则执行下一子串匹配,反之执行下一步骤。
s42比较输入文本字符串的k-1子串和预制数组的k子串中所有元素是否匹配;
s43将文本指针重新赋值。
进一步限定,所述的将文本指针重新赋值为k+m。
一种字符串匹配系统,其特征在于,它包括:字符串输入模块、数组定义模块、字符串匹配模块、输出显示模块和人机交互模块;字符串输入模块与数组定义模块相连,数组定义模块与字符匹配模块相连,字符匹配模块与输出显示相连,输出显示模块与人机交互模块相连。
进一步限定,所述的字符串输入模块将长度为n的所有文本字符串输入,将长度为m文本字符串进行匹配的模式串输入,m小于等于n;数组定义模块分别增加一个新的移动数组和定义一个预制数组。
进一步限定,所述的字符串匹配模块执行文本字符串与模式串的匹配具体为:
当匹配开始比较输入文本字符串的k-m+1至k的子串是否与输入模式串的0至m-1的子串,从右至左依次检查判断是否完全匹配,匹配成功则执行下一子串匹配,反之执行下一步骤;
比较输入文本字符串的k-1子串和预制数组的k子串中所有元素是否匹配;
将文本指针重新赋值。
本发明的有益效果是:本发明使算法更简单,算法需要的空间资源更少,计算速度更快充分利用模式串特征进行更大距离的移动,使算法获得更高的效率。改进后的算法能够增加“坏字符”方法的右移量,有效地提高匹配速率。针对网络入侵行为的入侵检测,基于模式匹配技术的入侵检测系统,就是通过提取已有攻击信息的特征编码成模式,然后将审计信息与该模式进行匹配,从中发现是否存在攻击行为实现对网络安全的有效监控,预防网络犯罪。
附图说明
图1为本发明方法步骤流程图;
图2为本发明了系统框架图。
具体实施方式
下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。
如图1所示,一种字符串匹配方法,它包括以下步骤:
s1输入文本字符串:将所有文本字符串输入长度为n;
s2输入模式串:将要与文本字符串进行匹配的模式串输入长度为m,m小于等于n;
s3定义数组;
s4字符串匹配。
进一步限定,所述的定义数组包括:
增加一个新的移动数组;
定义一个预制数组。
进一步限定,所述的增加一个新的移动数组是根据字符在模式串中所出现的次数来确定新的移动数组长度。
进一步限定,在字符在模式串中所出现的次数小于2时,新的移动数组长度为m;反之新的移动数组长度为m-f-1,f表示字符在模式串中倒数第二次出现的位置。
进一步限定,所述的定义预制数组具体分为如下步骤:
s31判断字符是否在模式串中出现;
s32若没有出现,该字符在模式串中位置为-1,即预制数组长度为0;
s33若出现,判定字符最后出现在模式中的位置;
s34字符在模式串中位置为0,即预制数组长度为1;字符在模式串中位置为e,即预制数组长度为e-1。
进一步限定,所述的字符串匹配具体分为如下步骤:
s41当匹配开始比较输入文本字符串的k-m+1至k的子串是否与输入模式串的0至m-1的子串,从右至左依次检查判断是否完全匹配,匹配成功则执行下一子串匹配,反之执行下一步骤。
s42比较输入文本字符串的k-1子串和预制数组的k子串中所有元素是否匹配;
s43将文本指针重新赋值。
进一步限定,所述的将文本指针重新赋值为k+m。
如图2所示,一种字符串匹配系统,其特征在于,它包括:人机交互模块、字符串输入模块、数组定义模块、字符串匹配模块和输出显示模块;人机交互模块与符串输入模块相连,字符串输入模块和数组定义模块相连,数组定义模块和字符串匹配模块相连,字符串匹配模块与输出显示模块相连。
进一步限定,所述的字符串输入模块将长度为n的所有文本字符串输入,将长度为m文本字符串进行匹配的模式串输入,m小于等于n;数组定义模块分别增加一个新的移动数组和定义一个预制数组。
进一步限定,所述的字符串匹配模块执行文本字符串与模式串的匹配具体为:
当匹配开始比较输入文本字符串的k-m+1至k的子串是否与输入模式串的0至m-1的子串,从右至左依次检查判断是否完全匹配,匹配成功则执行下一子串匹配,反之执行下一步骤。
比较输入文本字符串的k-1子串和预制数组的k子串中所有元素是否匹配;
将文本指针重新赋值。
实施例:
通过字符串输入模块将长度为n所有文本字符串输入;
通过字符串输入模块将长度为m且要与文本字符串进行匹配的模式串输入,m小于等于n;
通过人机交互模块控制数组定义模块增加一个新的移动数组:
判断字符在模式串中所出现的次数是否大于等于2;
如果字符在模式串中所出现的次数小于2时,新的移动数组长度为m;反之新的移动数组长度为m-f-1,f表示字符在模式串中倒数第二次出现的位置;
通过人机交互模块控制数组定义模块定义一个预制数组;
判断字符是否在模式串中出现;
若没有出现,该字符在模式串中位置为-1,即预制数组长度为0;
若出现,判定字符最后出现在模式中的位置;
字符在模式串中位置为0,即预制数组长度为1;字符在模式串中位置为e,即预制数组长度为e-1。
字符串匹配比较输入文本字符串的k-m+1至k的子串是否与输入模式串的0至m-1的子串,从右至左依次检查判断是否完全匹配,匹配成功则执行下一子串匹配;
反之比较输入文本字符串的k-1子串和预制数组的k子串中所有元素是否匹配;
无论上述匹配成功或者失败都将文本指针重新赋值为k+m。
匹配结果最终将其显示在显示屏上。
本发明所揭露的方法、系统和模块,可以通过其它的方式实现。以上所描述的实施例仅是示意性的,例如,所述模块的划分,可以仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个模块或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以说通过一些接口,系统或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述分立部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例的方案目的。
另外,在本发明各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、制度存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识,进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。