CN102870116B - 内容匹配方法和装置 - Google Patents
内容匹配方法和装置 Download PDFInfo
- Publication number
- CN102870116B CN102870116B CN201280000614.9A CN201280000614A CN102870116B CN 102870116 B CN102870116 B CN 102870116B CN 201280000614 A CN201280000614 A CN 201280000614A CN 102870116 B CN102870116 B CN 102870116B
- Authority
- CN
- China
- Prior art keywords
- hash
- target
- result
- hash table
- string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种内容匹配方法和装置。该方法包括:基于设定的至少一种哈希算法对至少一个目标字符串进行哈希运算,以分别获取各目标哈希结果;根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;根据所述至少一种哈希算法对被测字符串进行哈希运算,以获取各被测哈希结果;根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果。本发明能简化匹配所占用的***资源,字符串提取过程和字符串哈希匹配过程并行执行,能提高匹配速度;且在增加或减少目标字符串时,不必对哈希匹配表重新编译,易于升级和维护。
Description
技术领域
本发明实施例涉及数据处理技术,尤其涉及一种内容匹配方法和装置。
背景技术
随着网络精细化发展,许多网络用户和设备商越来越关注报文7层以上内容,用于进行包过滤、内容计费、流量检测、搜索引擎等,在国防、公安、安全、网络服务管理、商业广告等领域也逐步得到广泛应用。深度报文解析(Deep Packet Inspection,简称DPI)技术应运而生,可基于协议规定识别报文中的各个字段内容。协议识别/解析是DPI关键技术之一,而字符串/特征字匹配是协议识别/解析的重要内容,匹配速度的快慢直接影响产品性能。
现有技术针对字符串或特征字进行的内容匹配技术典型的执行如下操作:a)将目标字符串分为至少一个第一字符串;b)通过组合生成第二字符串组,例如进一步将第一字符串的子串作为第二字符串;c)从第二字符串中提取第三字符串,例如按照黑名单、白名单筛选出常用的字符串作为第三字符串,采用状态机或规则树等算法编译各第三字符串;d)采用滑窗方式,根据不同的起始位置,比较被检测字符串中是否匹配第一个字符串节点处的第三字符串;e)如果匹配成功,但存在下一个字符串节点,则进入下一个匹配流程;f)如果匹配成功,且无下一字符串节点,则被检测字符串与目标字符串匹配;g)如果匹配失败,则被检测字符串与目标字符串不匹配。
现有的内容匹配方法至少存在如下缺陷:1)如果目标字符串较长时,匹配节点分支和匹配时间成倍增加,性能会急剧下降;2)为了提高性能时,只能采用多匹配引擎,资源消耗过大;3)新增目标字符串时,需要重新编译规则树,不利于热升级,只能采用表项备份切换方式解决。
发明内容
本发明实施例提供一种内容匹配方法和装置,以提高字符串内容匹配时的匹配速度,减少资源占用量,同时便于升级和维护。
本发明实施例提供了一种内容匹配方法,包括:
基于设定的至少一种哈希算法对至少一个目标字符串分别进行哈希运算,以分别获取每个目标字符串与各哈希算法对应的各目标哈希结果;
根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;
根据所述至少一种哈希算法对被测字符串进行哈希运算,以获取所述被测字符串与各哈希算法对应的各被测哈希结果;
根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果。
本发明实施例还提供了一种内容匹配装置,包括:
第一哈希运算模块,用于基于设定的至少一种哈希算法对至少一个目标字符串分别进行哈希运算,以分别获取每个目标字符串与各哈希算法对应的各目标哈希结果;
哈希表形成模块,用于根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;
第二哈希运算模块,用于根据所述至少一种哈希算法对被测字符串进行哈希运算,以获取所述被测字符串与各哈希算法对应的各被测哈希结果;
哈希表匹配模块,用于根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果。
本发明实施例提供的内容匹配方法和装置,简化了匹配所占用的***资源,无需额外的倒换或备份资源;字符串提取过程和字符串哈希匹配过程并行执行,可以大大缩短匹配时间,能提高匹配速度;哈希结果的匹配操作不会受到目标字符串长短的影响,所以匹配效率高;且在增加或减少目标字符串时,不必对哈希匹配表重新编译,而只需修改相应的哈希表项即可,哈希算法及其数量也可以随时更新,因此易于升级和维护。
附图说明
图1为本发明实施例一提供的内容匹配方法的流程图;
图2为本发明实施例二提供的内容匹配方法的流程图;
图3为本发明实施例三提供的内容匹配方法的流程图;
图4为本发明实施例四提供的内容匹配方法的流程图;
图5为本发明实施例五提供的内容匹配装置的结构示意图;
图6为本发明实施例六提供的内容匹配装置的结构示意图;
图7为本发明实施例七提供的内容匹配装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
图1为本发明实施例一提供的内容匹配方法的流程图,该内容匹配方法可具体应用于各种应用场景中,典型地如网址过滤、报文过滤等,由以软件和/或硬件形式承载于服务器中的内容匹配装置来执行,例如承载于网关GPRS支持节点(Gateway GPRS Support Node,简称GGSN)。该方法具体包括如下步骤:
步骤110、内容匹配装置基于设定的至少一种哈希算法对至少一个目标字符串分别进行哈希运算,以分别获取每个目标字符串与各哈希算法对应的各目标哈希结果;
步骤120、内容匹配装置根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;
步骤130、内容匹配装置根据所述至少一种哈希算法对被测字符串进行哈希运算,以获取所述被被测字符串与各哈希算法对应的各个被测哈希运算结果;
步骤140、内容匹配装置根据所述被测字符串的各个被测哈希运算结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果。
本实施例的技术方案中包括了对目标字符串的编译步骤110和120,以及采用编译的哈希匹配表对被测字符串进行匹配的步骤130和140。所谓目标字符串,是内容匹配技术中,作为匹配基准的字符串,可以由用户预先设定。所谓被测字符串,是在内容匹配技术中,作为需要被匹配过滤的字符串,例如待过滤报文中的字段、网址等。例如,在网页过滤的应用中,用户可设定体现过滤目标的关键字作为目标字符串,例如能体现暴力、色情等等待过滤内容的字符串,对目标字符串进行预编译,以便执行后续的匹配操作。随后用户打开的网址,作为被测字符串,首先会与预编译的目标字符串进行匹配,如果匹配一致,则可以过滤掉该网页,否则,则正常打开该网址的网页。
本实施例将目标字符串通过哈希算法转换为目标哈希结果,采用同样的哈希算法获取被测字符串的被测哈希结果,通过哈希结果的匹配来得到被测字符串是否与目标字符串匹配的结果。
本发明实施例的技术方案,简化了匹配所占用的***资源,无需额外的倒换或备份资源;此外,字符串提取过程和字符串哈希匹配过程并行执行,当报文中的被测字符串较多时,例如20个以上,也可以大大缩短匹配时间,可流水作业,能提高匹配速度;哈希结果的匹配操作不会受到目标字符串长短的影响,所以匹配效率高;且在增加或减少目标字符串时,不必对哈希匹配表重新编译,而只需修改相应的哈希表项即可,哈希算法及其数量也可以随时更新,因此易于升级和维护。
本实施例的技术方案,匹配结果的精确度与所采用的具体哈希算法和哈希算法的数量相关。选择适当的哈希算法,能最大限度地体现目标字符串的特性,从而使得相同的字符串具有相同的哈希结果。增加哈希算法的数量,同样可以降低不同字符串具有完全相同的哈希结果的概率,从而可减小误匹配率。具体所采用的哈希算法及其数量可根据目标字符串的数量等实际应用场景来设置。本发明实施例的技术方案可适用于多种情况,并不限于字符串的匹配,也可以为适用于一串数据的匹配。
实施例二
在上述实施例技术方案的基础上,优选是哈希算法的数量为至少两个,则根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项具体可包括:将每个目标字符串的第一个目标哈希结果作为哈希表项索引,其他目标哈希结果作为哈希表项内容;上述步骤中,选取了第一个被测哈希结果作为哈希表项索引,但实际应用中,并不限定为按照哈希结果的顺序确定哪个结果作为表项索引,可任意设定哈希算法的顺序,即可任意确定第一个获得的目标哈希结果作为哈希表项索引。
则步骤140,根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果可具体执行如下操作:
步骤141、内容匹配装置将所述被测字符串的第一个被测哈希结果作为哈希表项索引,在所述哈希匹配表中查找对应的哈希表项;步骤142、如果查找到对应的哈希表项,内容匹配装置将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配;
步骤143、当所述其他被测哈希结果与查找到的哈希表项的内容均匹配一致时,获得匹配成功结果。
图2为本发明实施例二提供的内容匹配方法的流程图,本实施例以实例方式详细介绍各步骤。
首先自定义所用的哈希算法为五个,尽可能体现字符串特征,如表1所示,实际操作中并不限于此,可以是以下哈希算法的任意一种或任意组合,也可添加其他的哈希算法,当目标字符串较短或较少时,也可以将原始字符串设置为哈希算法:
表1
hash算法1 | 字符串按单字节相异或 |
hash算法2 | 字符串首字符 |
hash算法3 | 字符串尾字符 |
hash算法4 | 字符串长度 |
hash算法5 | 字符串按双字节相异或 |
步骤201、内容匹配装置基于设定的五种哈希算法对目标字符串进行哈希运算,以分别获取目标字符串与各哈希算法对应的各目标哈希结果;
假设目标字符串有三个,分别为:
目标字符串1=“ABCDEFG123456789”
目标字符串2=“abcdefg-xyz”
目标字符串3=“Accept-Language”
则目标字符串的ASCII码序列分别为:
目标字符串1对应ASCII码序列=“41424344454647313233343536373839”
目标字符串2对应ASCII码序列=“616263646566672D78797A”
目标字符串3对应ASCII码序列=“4163636570742D4C616E6775616765”
各目标哈希结果如下表2所示:
表2
步骤202、内容匹配装置根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,各目标字符串的哈希表项组合形成哈希匹配表;
各目标字符串的目标哈希结果构成如下表3所示的哈希匹配表,其中第一个目标哈希结果作为哈希表项索引(tab_index),其他目标哈希结果作为哈希表项内容(tab_content)。即将目标哈希结果1作为哈希表项索引,目标哈希结果2~5作为哈希表项内容,生成哈希匹配表。其中,表项内容(tab_content)的格式可以记为={stringID,hash结果2,hash结果3,hash结果4,hash结果5},如表3中所示。
表3
步骤203、内容匹配装置根据所述至少一种哈希算法对被测字符串进行哈希运算,以获取被测字符串与各哈希算法对应的各被测哈希结果。
被测字符串的获取方式有多种,使内容匹配方法的具体应用场景而定,典型地可以是网络中报文的待匹配字符串,例如接收网络中的超文本传送协议(Hypertext Transfer Protocol,简称HTTP)请求报文如下:
GET/product/ggsn/index.htm HTTP/1.1\r\n
Accept:*/*\r\n
Referer:http://www.huawei.com∧r\n
Accept-Language:zh-cn\r\n
Accept-Encoding:gzip,deflate\r\n
User-Agent:Mozilla/4.0(compatible;MSIE 6.0;Windows NT 5.1;SV1;.NETCLR 2.0.50727)\r\n
Host:www.huawei.com\r\n
ABCDEFG123456789:xxxxxxxxxxx\r\n
Connection:Keep-Alive\r\n
\r\n
根据HTTP协议解析规则,提取“\r\n”特征字符和“:”特征字符间的字符串如下:
提取被测字符串1=“Accept”
提取被测字符串2=“Referer”
提取被测字符串3=“Accept-Language”
提取被测字符串4=“Accept-Encoding”
提取被测字符串5=“User-Agent”
提取被测字符串6=“Host”
提取被测字符串7=“ABCDEFG123456789”
提取被测字符串8=“Connection”
上述字符串的提取策略还可以有多种,本发明实施例并不受限于此。
根据设定的哈希算法计算获得的被测哈希结果如下表4所示:
表4
步骤204、内容匹配装置将被测字符串的第一个被测哈希结果作为哈希表项索引,在所述哈希匹配表中查找对应的哈希表项;
步骤205、如果查找到对应的哈希表项,则内容匹配装置将所述被测字符串的其他被测哈希结果与查找到哈希表项的哈希表项内容进行匹配;当然,若无法查找到对应的哈希表项,则无需执行后续步骤,表明匹配失败。
以“Accept-Language”为例,其对应的哈希表项索引为0x3F,能够在表3的哈希匹配表中找到对应的哈希表项,同样“ABCDEFG123456789”也能查找到对应的哈希表项,而其他被测字符串则无法查找对应表项,即可直接视为匹配失败。将“Accept-Language”和“ABCDEFG123456789”的其他被测哈希结果与查找到哈希表项的哈希表项内容进行匹配。各被测字符串的匹配结果如下表5所示:
表5
待匹配字符串 | 表项索引 | 匹配结果 |
Accept | 0x20 | 表项为空,不匹配 |
Referer | 0x51 | 表项为空,不匹配 |
Accept-Language | 0x3F | 0x03_41_65_0F_7D42,完全匹配 |
Accept-Encoding | 0x3D | 表项为空,不匹配 |
User-Agent | 0x45 | 表项为空,不匹配 |
Host | 0x20 | 表项为空,不匹配 |
ABCDEFG123456789 | 0x71 | 0x01_41_39_10_0879,完全匹配 |
Connection | 0x59 | 表项为空,不匹配 |
步骤206、当被测字符串的其他被测哈希结果与查找到的哈希表项的所有哈希表项内容均匹配一致时,获得匹配成功结果。
即被测字符串“Accept-Language”和“ABCDEFG123456789”匹配到目标字符串。可以根据匹配结果输出匹配成功的字符串ID,以便根据匹配结果执行后续的操作,例如网址过滤等。也可以进一步判断是否还有后续报文的输入,若有,则重复执行上述匹配流程。
本实施例的技术方案详细介绍了各步骤的操作,由于各表项的匹配操作可独立进行,因此各被测字符串的哈希结果计算和匹配可以并行进行,流水实现高速率匹配,所以显著提高了匹配速度。
在上述实施例的技术方案中,可以选择某一种哈希算法的哈希结果作为表项索引,或者,也可以选择多种哈希算法的多个哈希结果进行组合,作为表项索引。实际上,由多个哈希结果进行组合即是一种组合式哈希算法。所以本发明实施例中的哈希算法不仅可以是简单的哈希计算,也可以是多个简单哈希计算的组合哈希算法,能够更突出的表征字符串的特征,提高匹配精度。
实施例三
图3为本发明实施例三提供的内容匹配方法的流程图,本实施例可以以上述实施例为基础,进一步包括添加目标字符串的升级操作,在前述流程的基础上,还包括如下步骤:
步骤310、内容匹配装置根据接收到的目标字符串添加请求中待添加的目标字符串,基于设定的至少一种哈希算法对待添加的目标字符串进行哈希运算,以获取所述待添加的目标字符串与各哈希算法对应的各目标哈希结果;
在上述步骤中,也可以设置对添加操作的其他限制,例如,首先判断哈希匹配表的表项是否已达到上限值,从而确定是否允许添加新的目标字符串。
步骤320、内容匹配装置将待添加目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;
步骤330、内容匹配装置判断所述当前哈希表项的表项内容是否为空,若是,则执行步骤340、若否,则执行步骤350;
步骤340、当所述当前哈希表项的表项内容为空时,将待添加目标字符串的其他目标哈希结果添加到当前哈希表项的表项中,作为当前哈希表项的内容;
步骤350、当所述当前哈希表项的表项内容不为空时,采用级联方式,将所述待添加目标字符串的其他目标哈希结果作为所述当前哈希表项的下一级表项内容添加至所述哈希匹配表中。
本实施例添加目标字符串的过程能够有效避免字符串哈希表项索引相同造成的冲突。若目标字符串的哈希表项索引相同,则可以采用级联的方式设置另一哈希表项。在被测字符串进行匹配时,对于级联形式存储的表项可以进行顺序匹配,以保证匹配结果的精度要求。
采用级联方式,将待添加目标字符串的其他目标哈希结果作为当前哈希表项的下一级表项内容添加至所述哈希匹配表中的操作可具体包括:
步骤351、比较待添加目标字符串的其他目标哈希结果与当前哈希表项的表项内容是否一致,若是,则执行步骤352,若否,则执行步骤353;
步骤352、若一致时,丢弃待添加目标字符串,结束添加操作流程;
步骤353、若不一致时,读取当前哈希表项的下一级偏移表项索引,并根据偏移表项索引读取下一级哈希表项,将所述下一级哈希表项作为更新后的当前哈希表项;
步骤354、判断所述更新后的当前哈希表项的表项内容是否为空,若是,则执行步骤355,若否,则执行步骤356;
步骤355、当判断出所述更新后的当前哈希表项的表项内容为空时,将待添加目标字符串的其他目标哈希结果添加为当前哈希表项的表项内容;
步骤356、当判断出所述更新后的当前哈希表项的表项内容不为空时,返回执行步骤351的比较操作。
上述步骤354至356,相当于返回执行前述步骤330。
上述技术方案,若某一级的表项内容不为空,但比较结果一致时,即表明发生不同目标字符串具有相同哈希表项的冲突,可直接丢弃此类目标字符串。虽然会产生一定的匹配精度下降,但是,通过设置哈希算法及其数量,可以尽量减少此类冲突,或通过提示操作人员,尽量减少此类目标字符串的设置。
上述操作中,级联的表项可以有多级,每一级记录下一级的偏移表项索引,以便在一级表项匹配失败时,转移至下一级继续匹配,直至匹配成功或无下一级偏移表项。即在被测字符串的匹配流程中,如果查找到对应的哈希表项,将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配之后,还包括:当所述其他被测哈希结果与查找到的哈希表项的内容匹配不一致时,按照偏移表项索引顺序查找下一级哈希表项,并返回执行将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配的操作。
本实施例所提供的目标字符串添加方法,某一表项的添加并不影响其他表项,可以不必对哈希匹配表进行全文的更新,因此易于实现维护升级。
在上述技术方案的基础上,优选设置哈希算法中至少包括将原始字符串本身作为哈希结果的原始字符串哈希算法,且所述原始字符串作为下一级哈希表项的表项内容。
例如设置两个哈希算法:
hash算法1=字符串按单字节相异或
hash算法2=完整目标字符串
则目标字符串的哈希结果如下表6所示:
表6
ID | 目标字符串 | 目标哈希结果1 | 目标哈希结果2 |
1 | A | 0x61 | 0x00000061 |
2 | B | 0x62 | 0x00000062 |
3 | Cd | 0x07 | 0x00006364 |
4 | Ef | 0x03 | 0x00006566 |
5 | ABCD | 0x04 | 0x41424344 |
6 | EFGH | 0x0C | 0x45464748 |
7 | BCD | 0x45 | 0x00424344 |
8 | EFG | 0x44 | 0x00454647 |
采用目标字符串的原始字符串作为一项哈希算法的优点在于,能够确保字符串的匹配精度,而将此哈希算法的结果作为哈希表项级联的下一级或最后一级的优点在于,级联表项匹配会串行执行,若前述的哈希结果匹配不一致,则可以迅速判断出匹配失败,直至下一级或最后一级才进行原始字符串的精确匹配来保证匹配准确性。既可以保证匹配精度,又能节约匹配时间。
实施例四
图4为本发明实施例四提供的内容匹配方法的流程图,本实施例可以以上述任意实施例为基础,进一步增加了修改或删除目标字符串的操作,修改和删除操作基本类似,具体包括如下步骤:
步骤410、内容匹配装置根据接收到的目标字符串修改请求或删除请求中的待修改或待删除目标字符串,基于设定的至少一种哈希算法对所述待修改或待删除目标字符串进行哈希运算,以获取所述待修改或待删除目标字符串与各哈希算法对应的各目标哈希结果;
步骤420、内容匹配装置将待修改或待删除目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;
步骤430、内容匹配装置对所述当前哈希表项的哈希表项内容进行修改或删除。
修改操作具体是修改相应的哈希表项内容,删除操作则是删除对应的级联表项或删除整个表项。
实施例五
图5为本发明实施例五提供的内容匹配装置的结构示意图,该内容匹配装置包括:第一哈希运算模块510、哈希表形成模块520、第二哈希运算模块530和哈希表匹配模块540。其中,第一哈希运算模块510用于基于设定的至少一种哈希算法对至少一个目标字符串分别进行哈希运算,以分别获取每个目标字符串与各哈希算法对应的各目标哈希结果;哈希表形成模块520用于根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;第二哈希运算模块530用于根据所述至少一种哈希算法对被测字符串进行哈希运算,以获取所述被测字符串与各哈希算法对应的各被测哈希结果;哈希表匹配模块540用于根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果。
在上述技术方案的基础上,哈希算法的数量优选为至少两个,则所述哈希表形成模块520具体用于将每个目标字符串的第一个目标哈希结果作为哈希表项索引,其他目标哈希结果作为哈希表项内容,将各个目标字符串的哈希表项组合形成哈希匹配表;则所述哈希表匹配模块540可以包括:索引匹配单元541、内容匹配单元542和结果获取单元543。其中,索引匹配单元541用于将所述被测字符串的第一个被测哈希结果作为哈希表项索引,在所述哈希匹配表中查找对应的哈希表项;内容匹配单元542用于如果查找到对应的哈希表项,将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配;结果获取单元543用于当所述其他被测哈希结果与查找到的哈希表项的内容均匹配一致时,获得匹配成功结果。
本发明实施例所提供的内容匹配装置,通过哈希结果的匹配来实现字符串的匹配,能够实现各表项的并行匹配,从而提高匹配速度;哈希匹配表中各表项的更新并不相互影响,易于实现目标字符串的增加和修改。
实施例六
图6为本发明实施例六提供的内容匹配装置的结构示意图,在上述实施例的基础上,该内容匹配装置还可以包括:第三哈希运算模块610、表项读取模块620、内容添加模块630和级联添加模块640。其中,第三哈希运算模块610用于根据接收到的目标字符串添加请求中待添加的目标字符串,基于所述设定的至少一种哈希算法对待添加的目标字符串进行哈希运算,以获取所述待添加的目标字符串与各哈希算法对应的各目标哈希结果;表项读取模块620用于将待添加目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;内容添加模块630用于当所述当前哈希表项的表项内容为空时,将所述待添加目标字符串的其他目标哈希结果添加到当前哈希表项中,作为当前哈希表项的内容;级联添加模块640用于当所述当前哈希表项的表项内容不为空时,采用级联方式,将所述待添加目标字符串的其他目标哈希结果作为所述当前哈希表项的下一级表项内容添加至所述哈希匹配表中。
其中,级联添加模块640优选包括:比较单元641、丢弃单元642、偏移索引读取单元643、内容添加单元644和内容判断单元645。其中,比较单元641用于比较待添加目标字符串的其他目标哈希结果与当前哈希表项的表项内容是否一致;丢弃单元642用于若一致时,丢弃待添加目标字符串;偏移索引读取单元643用于若不一致时,读取当前哈希表项的下一级偏移表项索引,并根据所述偏移表项索引读取下一级哈希表项,将所述下一级哈希表项作为更新后的当前哈希表项;内容添加单元644用于当判断出所述更新后的当前哈希表项的表项内容为空时,将待添加目标字符串的其他目标哈希结果添加为当前哈希表项的表项内容;内容判断单元645用于当判断出所述更新后的当前哈希表项的表项内容不为空时,返回执行所述比较操作。
该内容匹配装置还可以包括:偏移表项查找单元,当所述其他被测哈希结果与查找到的哈希表项的内容匹配不一致时,按照偏移表项索引顺序查找下一级哈希表项,并返回执行内容匹配单元的将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配的操作。
本实施例所提供的内容匹配装置,能够方便的添加目标字符串,不会导致整个哈希匹配表的编译,所以易于升级维护。通过设置级联的表项,也能有效解决目标字符串之间哈希表项的冲突问题,提高匹配的精度。
实施例七
图7为本发明实施例七提供的内容匹配装置的结构示意图,该内容匹配装置还可以包括:第四哈希运算模块710、索引匹配模块720和修改删除模块730。其中,第四哈希运算模块710用于根据接收到的目标字符串修改请求或删除请求中的待修改或待删除目标字符串,基于设定的至少一种哈希算法对所述待修改或待删除目标字符串进行哈希运算,以获取所述待修改或待删除目标字符串与各哈希算法对应的各目标哈希结果;索引匹配模块720用于将待修改或待删除目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;修改删除模块730用于对所述当前哈希表项的哈希表项内容进行修改或删除。
本实施例所提供的内容匹配装置,能够方便的修改和删除目标字符串,不会导致整个哈希匹配表的编译,所以易于升级维护。
本发明各实施例所提供的内容匹配装置,可执行本发明任意实施例所提供的内容匹配方法,具备相应的功能模块。该内容匹配方法和装置具备诸多优点,能提高匹配速度、减少资源占用,同时能易于升级维护。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (9)
1.一种内容匹配方法,其特征在于,包括:
基于设定的至少两种哈希算法对至少一个目标字符串分别进行哈希运算,以分别获取每个目标字符串与各哈希算法对应的各目标哈希结果;
根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;
根据所述至少两种哈希算法对被测字符串进行哈希运算,以获取所述被测字符串与各哈希算法对应的各被测哈希结果;
根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果;
其中,根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项包括:将每个目标字符串的第一个目标哈希结果作为哈希表项索引,其他目标哈希结果作为哈希表项内容;
根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果包括:
将所述被测字符串的第一个被测哈希结果作为哈希表项索引,在所述哈希匹配表中查找对应的哈希表项;
如果查找到对应的哈希表项,将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配;
当所述其他被测哈希结果与查找到的哈希表项的内容均匹配一致时,获得匹配成功结果;
其中,所述方法还包括:
根据接收到的目标字符串添加请求中待添加的目标字符串,基于所述设定的至少两种哈希算法对待添加的目标字符串进行哈希运算,以获取所述待添加的目标字符串与各哈希算法对应的各目标哈希结果;
将所述待添加目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;
当所述当前哈希表项的表项内容为空时,将所述待添加目标字符串的其他目标哈希结果添加到当前哈希表项的表项中,作为当前哈希表项的内容;
当所述当前哈希表项的表项内容不为空时,采用级联方式,将所述待添加目标字符串的其他目标哈希结果作为所述当前哈希表项的下一级表项内容添加至所述哈希匹配表中。
2.根据权利要求1所述的内容匹配方法,其特征在于,采用级联方式,将所述待添加目标字符串的其他目标哈希结果作为所述当前哈希表项的下一级表项内容添加至所述哈希匹配表中,包括:
比较待添加目标字符串的其他目标哈希结果与当前哈希表项的表项内容是否一致;
若一致时,丢弃待添加目标字符串;
若不一致时,读取当前哈希表项的下一级偏移表项索引,并根据所述偏移表项索引读取下一级哈希表项,将所述下一级哈希表项作为更新后的当前哈希表项;
当判断出所述更新后的当前哈希表项的表项内容为空时,将待添加目标字符串的其他目标哈希结果添加为当前哈希表项的表项内容;
当判断出所述更新后的当前哈希表项的表项内容不为空时,返回执行所述比较操作。
3.根据权利要求1或2所述的内容匹配方法,其特征在于,如果查找到对应的哈希表项,将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配之后,还包括:
当所述其他被测哈希结果与查找到的哈希表项的内容匹配不一致时,按照偏移表项索引顺序查找下一级哈希表项,并返回执行将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配的操作。
4.根据权利要求3所述的内容匹配方法,其特征在于:所述哈希算法中至少包括将原始字符串本身作为哈希结果的原始字符串哈希算法,且所述原始字符串作为下一级哈希表项的表项内容。
5.根据权利要求1或2所述的内容匹配方法,其特征在于,还包括:
根据接收到的目标字符串修改请求或删除请求中的待修改或待删除目标字符串,基于设定的至少两种哈希算法对所述待修改或待删除目标字符串进行哈希运算,以获取所述待修改或待删除目标字符串与各哈希算法对应的各目标哈希结果;
将待修改或待删除目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;
对所述当前哈希表项的哈希表项内容进行修改或删除。
6.一种内容匹配装置,其特征在于,包括:
第一哈希运算模块,用于基于设定的至少两种哈希算法对至少一个目标字符串分别进行哈希运算,以分别获取每个目标字符串与各哈希算法对应的各目标哈希结果;
哈希表形成模块,用于根据每个目标字符串的各目标哈希结果形成该目标字符串的哈希表项,将各个目标字符串的哈希表项组合形成哈希匹配表;
第二哈希运算模块,用于根据所述至少两种哈希算法对被测字符串进行哈希运算,以获取所述被测字符串与各哈希算法对应的各被测哈希结果;
哈希表匹配模块,用于根据所述被测字符串的各被测哈希结果在所述哈希匹配表的各哈希表项中进行匹配,以获得匹配结果;
其中,所述哈希表形成模块具体用于将每个目标字符串的第一个目标哈希结果作为哈希表项索引,其他目标哈希结果作为哈希表项内容,将各个目标字符串的哈希表项组合形成哈希匹配表;
所述哈希表匹配模块包括:
索引匹配单元,用于将所述被测字符串的第一个被测哈希结果作为哈希表项索引,在所述哈希匹配表中查找对应的哈希表项;
内容匹配单元,用于如果查找到对应的哈希表项,将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配;
结果获取单元,用于当所述其他被测哈希结果与查找到的哈希表项的内容均匹配一致时,获得匹配成功结果;
其中,所述装置还包括:
第三哈希运算模块,用于根据接收到的目标字符串添加请求中待添加的目标字符串,基于所述设定的至少两种哈希算法对待添加的目标字符串进行哈希运算,以获取所述待添加的目标字符串与各哈希算法对应的各目标哈希结果;
表项读取模块,用于将所述待添加目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;
内容添加模块,用于当所述当前哈希表项的表项内容为空时,将所述待添加目标字符串的其他目标哈希结果添加到当前哈希表项中,作为当前哈希表项的内容;
级联添加模块,用于当所述当前哈希表项的表项内容不为空时,采用级联方式,将所述待添加目标字符串的其他目标哈希结果作为所述当前哈希表项的下一级表项内容添加至所述哈希匹配表中。
7.根据权利要求6所述的内容匹配装置,其特征在于,级联添加模块包括:
比较单元,用于比较待添加目标字符串的其他目标哈希结果与当前哈希表项的表项内容是否一致;
丢弃单元,用于若一致时,丢弃待添加目标字符串;
偏移索引读取单元,用于若不一致时,读取当前哈希表项的下一级偏移表项索引,并根据所述偏移表项索引读取下一级哈希表项,将所述下一级哈希表项作为更新后的当前哈希表项;
内容添加单元,用于当判断出所述更新后的当前哈希表项的表项内容为空时,将待添加目标字符串的其他目标哈希结果添加为当前哈希表项的表项内容;
内容判断单元,用于当判断出所述更新后的当前哈希表项的表项内容不为空时,返回执行所述比较操作。
8.根据权利要求6或7所述的内容匹配装置,其特征在于,还包括:
偏移表项查找单元,当所述其他被测哈希结果与查找到的哈希表项的内容匹配不一致时,按照偏移表项索引顺序查找下一级哈希表项,并返回执行所述内容匹配单元的将所述被测字符串的其他被测哈希结果与查找到的哈希表项的内容进行匹配的操作。
9.根据权利要求6或7所述的内容匹配装置,其特征在于,还包括:
第四哈希运算模块,用于根据接收到的目标字符串修改请求或删除请求中的待修改或待删除目标字符串,基于设定的至少两种哈希算法对所述待修改或待删除目标字符串进行哈希运算,以获取所述待修改或待删除目标字符串与各哈希算法对应的各目标哈希结果;
索引匹配模块,用于将待修改或待删除目标字符串的第一个目标哈希结果作为哈希表项索引,从所述哈希匹配表中读取对应的哈希表项,作为当前哈希表项;
修改删除模块,用于对所述当前哈希表项的哈希表项内容进行修改或删除。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2012/077996 WO2014000305A1 (zh) | 2012-06-30 | 2012-06-30 | 内容匹配方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102870116A CN102870116A (zh) | 2013-01-09 |
CN102870116B true CN102870116B (zh) | 2014-09-03 |
Family
ID=47447746
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201280000614.9A Expired - Fee Related CN102870116B (zh) | 2012-06-30 | 2012-06-30 | 内容匹配方法和装置 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN102870116B (zh) |
WO (1) | WO2014000305A1 (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103116629B (zh) * | 2013-02-01 | 2016-04-20 | 腾讯科技(深圳)有限公司 | 一种音频内容的匹配方法和*** |
CN103414701B (zh) * | 2013-07-25 | 2017-03-01 | 华为技术有限公司 | 一种规则匹配方法及设备 |
CN103500183A (zh) * | 2013-09-12 | 2014-01-08 | 国家计算机网络与信息安全管理中心 | 一种基于多个相关字段组合索引存储结构及建立、查询与维护方法 |
CN105426413B (zh) | 2015-10-31 | 2018-05-04 | 华为技术有限公司 | 一种编码方法及装置 |
CN106067876B (zh) * | 2016-05-27 | 2019-08-16 | 成都广达新网科技股份有限公司 | 一种基于模式匹配的http请求报文识别方法 |
CN109977295A (zh) * | 2019-04-11 | 2019-07-05 | 北京安护环宇科技有限公司 | 一种黑白名单匹配方法及装置 |
CN111627536A (zh) * | 2020-05-14 | 2020-09-04 | 广元市中心医院 | 一种用于医院的不良事件管理***和管理方法 |
US11301440B2 (en) * | 2020-06-18 | 2022-04-12 | Lexisnexis Risk Solutions, Inc. | Fuzzy search using field-level deletion neighborhoods |
CN113347214B (zh) * | 2021-08-05 | 2021-11-12 | 湖南戎腾网络科技有限公司 | 一种高频状态匹配方法及*** |
CN114422389B (zh) * | 2022-02-24 | 2023-09-12 | 成都北中网芯科技有限公司 | 一种基于哈希和硬件加速的高速实时网络数据监测方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1794236A (zh) * | 2004-12-21 | 2006-06-28 | 英特尔公司 | 高效的基于cam在分组有效载荷中进行串搜索的技术 |
CN101350788A (zh) * | 2008-08-25 | 2009-01-21 | 中兴通讯股份有限公司 | 一种网络处理器内外混合查表方法 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7110540B2 (en) * | 2002-04-25 | 2006-09-19 | Intel Corporation | Multi-pass hierarchical pattern matching |
EP1492126A1 (en) * | 2003-06-27 | 2004-12-29 | Dialog Semiconductor GmbH | Analog or multilevel DRAM cell having natural transistor |
-
2012
- 2012-06-30 CN CN201280000614.9A patent/CN102870116B/zh not_active Expired - Fee Related
- 2012-06-30 WO PCT/CN2012/077996 patent/WO2014000305A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1794236A (zh) * | 2004-12-21 | 2006-06-28 | 英特尔公司 | 高效的基于cam在分组有效载荷中进行串搜索的技术 |
CN101350788A (zh) * | 2008-08-25 | 2009-01-21 | 中兴通讯股份有限公司 | 一种网络处理器内外混合查表方法 |
CN101692651A (zh) * | 2009-09-27 | 2010-04-07 | 中兴通讯股份有限公司 | 一种哈希查找表的方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2014000305A1 (zh) | 2014-01-03 |
CN102870116A (zh) | 2013-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102870116B (zh) | 内容匹配方法和装置 | |
CN104067282B (zh) | 状态机晶格中的计数器操作 | |
JP6051212B2 (ja) | 反復データの処理 | |
CN101464905B (zh) | 一种网页信息抽取的***及方法 | |
CN102857493B (zh) | 内容过滤方法和装置 | |
US8977626B2 (en) | Indexing and searching a data collection | |
CN102682098B (zh) | 检测网页内容变更的方法及装置 | |
CN110825363B (zh) | 智能合约获取方法、装置、电子设备及存储介质 | |
CN102148805B (zh) | 特征匹配方法和装置 | |
US9244679B1 (en) | Systems and methods for automatically identifying changes in deliverable files | |
CN111666468A (zh) | 一种基于团簇属性在社交网络中搜索个性化影响力社区的方法 | |
CN102609462A (zh) | 一种通过提取sql模板对海量sql压缩存储的方法 | |
CN102193948A (zh) | 特征匹配方法和装置 | |
CN102193995B (zh) | 一种建立多媒体数据索引、检索的方法及装置 | |
CN106055375A (zh) | 应用程序安装方法及装置 | |
CN103064908A (zh) | 一种通过内存快速去重名单的方法 | |
CN105630797A (zh) | 数据处理方法及*** | |
CN107977504A (zh) | 一种非对称堆芯燃料管理计算方法、装置及终端设备 | |
US20080306948A1 (en) | String and binary data sorting | |
CN102542186A (zh) | 恶意程序检测装置以及恶意程序检测方法 | |
CN115840775A (zh) | 数据的提取方法、装置、服务器及存储介质 | |
CN113779025B (zh) | 一种区块链中分类数据检索效率的优化方法、***及应用 | |
CN113495901B (zh) | 一种面向可变长数据块的快速检索方法 | |
CN109284268A (zh) | 一种快速解析日志的方法、***及电子设备 | |
CN112994931B (zh) | 一种规则匹配的方法及其设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140903 Termination date: 20190630 |