資料介紹
提出了改進的AC-BM算法,將待匹配的字符串集合轉換為一個類似于Aho-Corasick算法的樹狀有限狀態自動機。匹配時,采取自后向前的方法,并借用BM算法的壞字符跳轉和好前綴跳轉技術。改進的AC-BM算法借助BMH算法思想,取消了原AC-BM算法的好前綴跳轉,并對壞字符跳轉部分的計算進行優化。新算法修改了skip的計算方法,不再保留每個節點的好前綴跳轉參數及壞字符跳轉參數,因此匹配只與當前匹配字符有關,而與當前節點無關,可以實現大小寫正文的識別。
關 鍵 詞 算法; 字符串匹配; 內容分析; 入侵檢測
Abstract ACBM is a Boyer-Moore like algorithm applied to a set of keywords held in an Aho-Corassick like keyword tree that overlays common prefixes of the keywords. The algorithm takes the best characteristics of both the Boyer-Moore and Aho-Corasick. Based on the idea of Boyer-Moore-Horspool, we make an improvement to AC-BM algorithm. In the improved version, the Good Prefix Shift is not performed, the Bad Character Shift function is improved, the Goto procedure is also modified which do not keep the parameters of Good Prefix Shift and Bad Character Shift.
Key words algorithm; string matching; content analysis; intrusion detection
字符串匹配是指在文本Textt=t1t2…tn中檢索子串Patp=p1p2…pm的所有出現。字符串匹配可分為單字符串匹配和字符串集合匹配兩種。單字符串匹配算法最著名的是KMP(Knuth-Morris-Pratt)算法和BM(Boyer-Moore)算法。KMP算法實現了無回溯匹配,字符串中的每個字符只匹配一次,時間復雜度為O(n+m)[1];BM算法采用跳躍方式,匹配時跳過不需匹配的字符,最優情況下的時間復雜度為O(n/m),平均情況下也大大優于KMP算法[2];文獻[3]取掉BM算法的好后綴試探(Good Suffix Heuristic),形成BMH(Boyer-Moore-Horspool)算法,實驗證明BMH算法性能在自然語言環境下比原始BM算法還要好。
字符串集合匹配是從文本Text中一次查找多個字符串P1,P2,…,Pm的所有出現,最經典的是AC(Aho and Corasick)算法。該算法將待匹配的多個字符串轉換為樹狀有限狀態自動機,然后進行掃描匹配,最優情況和平均情況的時間復雜度都為O(n)[4];文獻[5]提出了一種類似于AC和BM的算法,即Aho-Corasick_Boyer-Moore(AC_BM)混合算法。該算法根據包過濾的規則前綴共同信息較多的特點,采取自后向前的搜索方法,因此在速度方面具有較高的優越性[6]。
本文對AC-BM算法提出改進,并根據BMH算法的思想,取消好前綴跳轉(Good Prefix Shift),測試結果表明,該算法在數據包過濾、內容分析與審計等應用中,優于AC-BM算法。
1 AC-BM算法描述
AC-BM算法將待匹配的字符串集合轉換為一個類似于Aho-Corasick算法的樹狀有限狀態自動機,但構建時不是基于字符串的后綴而是前綴。匹配時,采取自后向前的方法,并借用BM算法的壞字符跳轉(BadCharacter Shift)和好前綴跳轉(Good Prefix Shift)技術。
壞字符跳轉即當字符串樹中的字符與被匹配內容x失配時,將字符串樹跳轉到下一個x的出現位置,如果x的字符串樹不存在,則將字符串樹向左移動字符串樹的最小字符串長度。好前綴跳轉即當字符串樹中的字符與被匹配內容x失配時,將字符串樹跳轉到字符串樹中一個與被測正文部分等同的位置。這個等同部分可以是字符串樹中某字符串的子串(子串跳轉),也可以是一個字符串的后綴(后綴跳轉)。
例如,設有規則ethernetmovesme,ethernetisking,ethernetisdead和ethernetforever,要檢查的數據包內容為nothingtoworryaboutinthis。首先,構造字符串有限狀態自動機,如圖1a。匹配從字符r開始,顯然r與e不匹配,由于字符串樹中下一個r出現在深度5的位置,字符串樹的最小字符串長度為14,根據壞字符跳轉,字符串樹可以安全向左移動5個字符,如圖1b。
- 字符串操作 2次下載
- strtok拆分字符串
- 利用STM32單片機串口發送字符串
- 串口屏LUA教程6-運算和字符串處理
- C語言編程字符串函數匯總資源下載 9次下載
- LabVIEW的常用字符串操作教程免費下載 25次下載
- 用指針實現字符串拷貝的程序和字符型指針變量與字符數組的區別說明 2次下載
- C語言中的字符串的使用方法詳細說明 1次下載
- 使用SQL Server連接字符串的資料總結 3次下載
- C語言的字符串處理函數
- 讀取字符串的C語言程序免費下載 10次下載
- BM模式匹配算法的研究和改進 0次下載
- 字符串函數測試學習工程
- 信息過濾系統中字符串匹配算法的研究
- 基于網絡入侵模式匹配的BM 算法研究與優化The Optim
- C語言字符串編譯函數介紹 381次閱讀
- 字符數組和字符串有沒有區別? 473次閱讀
- 字符串的相關知識 995次閱讀
- 什么是字符串 3956次閱讀
- C語言字符數組和字符串有什么區別 2990次閱讀
- 一文詳解JavaScript字符串 1054次閱讀
- 探究字符串模式匹配的高級數據結構和算法 858次閱讀
- 平化字符串處理方法簡介 2110次閱讀
- 字符串函數重寫練習 1872次閱讀
- 什么是復制字符串?Python如何復制字符串 2922次閱讀
- 學習Tcl來這里:字符串匹配 5390次閱讀
- python字符串拼接方式了解 987次閱讀
- 字符串移位包含的問題解決方案 1001次閱讀
- 字符串的KMP算法和BM算法 2378次閱讀
- C語言字符串轉數字實現方法 1.3w次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費下載
- 0.00 MB | 1490次下載 | 免費
- 2單片機典型實例介紹
- 18.19 MB | 93次下載 | 1 積分
- 3S7-200PLC編程實例詳細資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關電源原理及各功能電路詳解
- 0.38 MB | 11次下載 | 免費
- 6100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 7基于AT89C2051/4051單片機編程器的實驗
- 0.11 MB | 4次下載 | 免費
- 8基于單片機的紅外風扇遙控
- 0.23 MB | 3次下載 | 免費
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費
- 4LabView 8.0 專業版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費
- 5555集成電路應用800例(新編版)
- 0.00 MB | 33562次下載 | 免費
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費
- 8開關電源設計實例指南
- 未知 | 21539次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費
- 2protel99se軟件下載(可英文版轉中文版)
- 78.1 MB | 537791次下載 | 免費
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費
- 6電路仿真軟件multisim 10.0免費下載
- 340992 | 191183次下載 | 免費
- 7十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183277次下載 | 免費
- 8proe5.0野火版下載(中文版免費下載)
- 未知 | 138039次下載 | 免費
評論
查看更多