一种字符串的扫描方法、系统及存储介质
文献发布时间:2024-04-18 20:01:23
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种字符串的扫描方法、系统及存储介质。
背景技术
正则表达式规则可以等价编译转化成确定型有穷自动机(DFA,Determination ofFinite Automaton)进行字符串的扫描,广泛应用于数据检索和通讯等场景。尽管现有技术中对DFA进行了加速研究,但提高扫描速度的同时,会导致DFA扫描表的膨胀。因此,需要一种正则表达式扫描方法,提高扫描速度的同时不改变DFA扫描表的空间大小。
发明内容
有鉴于此,本申请的目的在于提供一种字符串的扫描方法、系统及存储介质,以提高DFA扫描速度的同时,不增大DFA扫描表的空间。
第一方面,本申请提供了一种字符串的扫描方法,方法包括针对待扫描文本的每个字符串,将该字符串与该字符串对应的第一拼接值进行拼接,以获取第一拼接字符串;针对每个字符串,基于该字符串对应的第一拼接字符串的哈希值与哈希表的命中关系,确定出该字符串对应的启始状态;针对每个字符串,基于该字符串对应的启始状态,按照预设的扫描规则对该字符串进行扫描。
优选的,通过以下方式确定每个字符串对应的第一拼接值:当该字符串为首个字符串时,从随机状态集中确定出一随机状态,以确定该字符串对应的第一拼接值;当该字符串为首个字符串之外的其他字符串时,获取上一字符串扫描后的终止状态,以确定该字符串对应的第一拼接值。
优选的,通过以下方式生成哈希表:针对每个字符串,将该字符串与第二拼接值进行拼接,以获取第二拼接字符串,其中,第二拼接值为随机状态集中的一随机状态;针对每个字符串,确定出该字符串对应的第二拼接字符串的哈希值;针对每个字符串,基于对应的随机状态,按照预设的扫描规则对该字符串进行扫描,以确定出该字符串对应的终止状态;针对每个字符串,将该字符串对应的哈希值和终止状态关联存储,以生成哈希表。
优选的,通过以下方式确定每一字符串对应的启始状态:确定哈希表中是否有与该字符串对应的第一拼接字符串的哈希值匹配的目标哈希值;若是,则将哈希表中目标哈希值关联的终止状态,确定为该字符串对应的启始状态;若否,则获取上一字符串扫描后的终止状态,确定为该字符串对应的启始状态。
优选的,还包括针对每个字符串,基于该字符串扫描状态以及可接受状态集之间的命中关系,对该字符串进行识别。
优选的,通过以下方式生成随机状态集:获取多个字符串扫描时对应的历史启始状态,并统计每个历史启始状态的频率;按照频率从大到小的顺序对所有历史启始状态进行排列;基于排列后的前N个历史启始状态,生成随机状态集。
第二方面,本申请提供了一种字符串的扫描系统,系统包括:
拼接模块,用于针对待扫描文本的每个字符串,将该字符串与该字符串对应的第一拼接值进行拼接,以获取第一拼接字符串;
裁决模块,用于针对每个字符串,基于该字符串对应的第一拼接字符串的哈希值与哈希表的命中关系,确定出该字符串对应的启始状态;
扫描模块,用于针对每个字符串,基于该字符串对应的启始状态,按照预设的扫描规则对该字符串进行扫描。
优选的,系统还包括:
分割模块,用于根据反馈信号对待扫描文本进行分割,以输出一字符串至拼接模块;
预处理模块,用于基于待扫描文本和随机状态集,生成待扫描文本对应的哈希表。
优选的,裁决模块还用于针对每个字符串,获取扫描模块发送的该字符串扫描后的终止状态,以生成反馈信号转发至分割模块。
第三方面,本申请还提供一种电子设备,包括:处理器、存储器和总线,存储器存储有处理器可执行的机器可读指令,当电子设备运行时,处理器与存储器之间通过总线通信,机器可读指令被处理器执行时执行如上述的一种字符串的扫描方法的步骤。
第四方面,本申请还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行如上述的一种字符串的扫描方法的步骤。
本申请提供的一种字符串的扫描方法、系统及存储介质,其中,方法包括针对待扫描文本的每个字符串,将该字符串与该字符串对应的第一拼接值进行拼接,以获取第一拼接字符串;针对每个字符串,基于该字符串对应的第一拼接字符串的哈希值与哈希表的命中关系,确定出该字符串对应的启始状态;针对每个字符串,基于该字符串对应的启始状态,按照预设的扫描规则对该字符串进行扫描。在提高DFA扫描速度的同时,不会增大DFA扫描表的空间。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例所提供的一种扫描引擎的加载步骤的流程图;
图2为本申请实施例所提供的一种哈希表的生成步骤的流程图;
图3为本申请实施例所提供的一种扫描引擎的扫描步骤的流程图;
图4为本申请实施例所提供的一种DFA扫描表的示意图;
图5为本申请实施例所提供的一种扫描系统的结构示意图;
图6为本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的每个其他实施例,都属于本申请保护的范围。
首先,对本申请可适用的应用场景进行介绍。本申请可应用于确定型有穷自动机(DFA)进行字符串的扫描。
基于此,本申请实施例提供了一种字符串的扫描方法、系统及存储介质。
请参阅图1,图1为本申请实施例所提供的一种扫描引擎的加载步骤的流程图。如图1中所示,本申请实施例提供的一种字符串的扫描方法,可以适用于正则表达式扫描引擎,对于输入该扫描引擎的待扫描文本来说,首先需要进入加载阶段。扫描引擎的加载步骤具体包括:
S10、将待扫描文本分割为多个字符串。
这里,每个字符串的长度没有限制,一般可以为5-10个字符。
S20、生成随机状态集。
具体的,可以通过以下方式生成随机状态集:
获取多个字符串扫描时对应的历史启始状态,并统计每个历史启始状态的频率。按照频率从大到小的顺序对所有历史启始状态进行排列。基于排列后的前N个历史启始状态,生成随机状态集。
这里的随机状态集是基于大数据环境中进行频率统计获得的。可以选择与当前待扫描文本属性相同的历史扫描文本的字符串所对应的历史启始状态,保证了随机状态集的贴合度。
S30、生成待扫描文本对应的哈希表。
请参阅图2,图2为本申请实施例所提供的一种哈希表的生成步骤的流程图。具体的,可以通过以下方式生成哈希表:
S301、针对每个字符串,将该字符串与第二拼接值进行拼接,以获取第二拼接字符串,其中,第二拼接值为随机状态集中的一随机状态。
针对每个字符串而言,这里的第二拼接值为在随机状态集中随机选择的一个随机状态。不同字符串对应的第二拼接值可以是相同的、也可以是不同的。
示例性的,字符串A
这里哈希值的计算可以采用MD-5、SHA-1、SHA-2等算法,不做限制。计算出的哈希值可以按照十二位十进制的格式输出。
S302、针对每个字符串,确定出该字符串对应的第二拼接字符串的哈希值。
S303、针对每个字符串,基于对应的随机状态,按照预设的扫描规则对该字符串进行扫描,以确定出该字符串对应的终止状态。
这里针对每个字符串,可以将该字符串对应的随机状态作为初始状态,按照预设好的DFA扫描表进行扫描,并确定最后一步的终止状态。
S304、针对每个字符串,将该字符串对应的哈希值和终止状态关联存储,以生成哈希表。
这里的哈希表可以包括两列,第一列是每个字符串对应的哈希值,第二列是同一字符串对应的终止状态。
生成对应的哈希表后,则加载阶段完成,可以进入扫描阶段。请参阅图3,图3为本申请实施例所提供的一种扫描引擎的扫描步骤的流程图。扫描引擎的扫描步骤包括:
S401、针对待扫描文本的每个字符串,将该字符串与该字符串对应的第一拼接值进行拼接,以获取第一拼接字符串。
在步骤S401中,通过以下方式确定每个字符串对应的第一拼接值:当该字符串为首个字符串时,从随机状态集中确定出一随机状态,以确定该字符串对应的第一拼接值;当该字符串为首个字符串之外的其他字符串时,获取上一字符串扫描后的终止状态,以确定该字符串对应的第一拼接值。
可以理解的是,对于首个扫描的字符串,可以选择一随机状态作为第一拼接值。对于不是首个扫描的字符串,则可以将上一字符串扫描后确定出的终止状态作为第一拼接值。
第一拼接字符串的拼接步骤与步骤S301中第二拼接字符串的原理类似,这里不再赘述。
S402、针对每个字符串,基于该字符串对应的第一拼接字符串的哈希值与哈希表的命中关系,确定出该字符串对应的启始状态。
第一拼接字符串的哈希值的计算也可以与第二拼接字符串哈希值的计算算法相同。
具体的,可以通过以下方式确定每一字符串对应的启始状态:
确定哈希表中是否有与该字符串对应的第一拼接字符串的哈希值匹配的目标哈希值。
若是,则将哈希表中目标哈希值关联的终止状态,确定为该字符串对应的启始状态。
若否,则获取上一字符串扫描后的终止状态,确定为该字符串对应的启始状态。
可以理解的是,将第一拼接字符串的哈希值
如果哈希表中所有的哈希值
S403、针对每个字符串,基于该字符串对应的启始状态,按照预设的扫描规则对该字符串进行扫描。
示例性的。待扫描文本对应的DFA扫描表是预先设置好的,具体可以如图4所示。
以字符串A
本申请实施例提供的字符串的扫描方法,将DFA扫描与哈希方法融合,在指定范围内动态规划每个字符串扫描的初始状态,可以减小DFA扫描表的空间,同时提高了DFA扫描速度。
在本申请的一个实施例中,针对每个字符串,基于该字符串的扫描状态以及可接受状态集之间的命中关系,还可以对该字符串进行识别。
对字符串的识别具体可以为异常流量检测、数据检索等场景。以异常流量检测为例,先确定某个病毒的特征为“cca”。然后以“cca”作为正则表达式规则,转化生成对应的DFA扫描表。将流量数据作为待扫描文本输入扫描引擎,通过DFA表对流量进行扫描。并确定每个字符串的扫描状态(包括
如图5所示,图5为本申请实施例提供的一种扫描系统的结构图。在本申请的一个实施例中,还提供了一种字符串的扫描系统,系统包括:
拼接模块,用于针对待扫描文本的每个字符串,将该字符串与该字符串对应的第一拼接值进行拼接,以获取第一拼接字符串;
裁决模块,用于针对每个字符串,基于该字符串对应的第一拼接字符串的哈希值与哈希表的命中关系,确定出该字符串对应的启始状态;
扫描模块,用于针对每个字符串,基于该字符串对应的启始状态,按照预设的扫描规则对该字符串进行扫描。
进一步的,系统还包括:
分割模块,用于根据反馈信号对待扫描文本进行分割,以输出一字符串至拼接模块;
预处理模块,用于基于待扫描文本和随机状态集,生成待扫描文本对应的哈希表。
裁决模块还用于针对每个字符串,获取扫描模块发送的该字符串扫描后的终止状态,以生成反馈信号转发至分割模块。
请参阅图6,图6为本申请实施例所提供的一种电子设备的结构示意图。如图6中所示,所述电子设备600包括处理器610、存储器620和总线630。
所述存储器620存储有所述处理器610可执行的机器可读指令,当电子设备600运行时,所述处理器610与所述存储器620之间通过总线630通信,所述机器可读指令被所述处理器610执行时,可以执行如上述方法实施例中的字符串的扫描方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时可以执行如上述方法实施例中的字符串的扫描方法的步骤,具体实现方式可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
- 基于稀疏系数通道剪枝的轻量化个人防护装备检测方法
- 基于均值感知稀疏的目标检测模型全局剪枝方法及设备