国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種快速查詢黑白名單的系統(tǒng)及方法

      文檔序號:6557492閱讀:431來源:國知局
      專利名稱:一種快速查詢黑白名單的系統(tǒng)及方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及計算機(jī)技術(shù)領(lǐng)域,更具體地說,涉及一種快速查詢黑白名單的系統(tǒng)及方法。
      背景技術(shù)
      黑白名單是用于記錄某些內(nèi)容是否能通過的數(shù)據(jù)表,在白名單中的項即為可以通過的項,在黑名單中的項即為需阻止的項。通常在具體實(shí)現(xiàn)時,黑白名單記錄在同一張數(shù)據(jù)表中,并用一個標(biāo)志字段(flag)表示該項為黑名單中的項還是白名單中的項(比如flag=0為黑名單中的項,而flag=1為白名單中的項)。
      例如對于網(wǎng)頁瀏覽中的網(wǎng)址過濾,即URL過濾,通常使用URL作為數(shù)據(jù)庫的關(guān)鍵字(KEY),并使用標(biāo)志字段區(qū)分黑白名單。在網(wǎng)址過濾中,黑白名單一般需要支持域名分級和通配符(*)。
      如圖1所示,網(wǎng)址過濾典型的過濾方法是首先做全路徑URL(例如http://a.b.c.d/dir/file.html)測試,如果從數(shù)據(jù)庫中查詢的flag=0,則表示該URL在黑名單,阻止對該URL的訪問;如果flag=1,則表示該URL在白名單,對該URL的訪問直接通過。
      如果該URL在數(shù)據(jù)庫中無記錄則再測試該域名(http://a.b.c.d),如果從數(shù)據(jù)庫中查詢到flag=0,則阻止對URL的訪問;如果flag=1,則對URL的訪問直接通過。
      如果域名(http://a.b.c.d)在數(shù)據(jù)庫中也無記錄,則開始做通配符(http://*.b.c.d)測試,如果從數(shù)據(jù)庫中查詢得到的flag=0,則阻止對URL的訪問;如果flag=1,則對于URL的訪問直接通過。如果在數(shù)據(jù)庫中沒有記錄,則繼續(xù)拆分域名做通配符(http://*.c.d)測試,如果還不在數(shù)據(jù)庫中則繼續(xù)拆分做通配符測試,直到只剩下最后一級。若此時還不在黑白名單中,則按照預(yù)定的過濾策略,確定是否阻止對URL的訪問。
      上述直接查詢數(shù)據(jù)庫實(shí)現(xiàn)黑白名單的方法,每測試一次都要查詢一次數(shù)據(jù)庫。由于在實(shí)際應(yīng)用中,很少將全路徑URL寫入黑白名單中,在極端情況下,例如支持域名做兩級星號通配符替換,需要查詢4次數(shù)據(jù)庫(一次全路徑URL,一次全域名,一次一級星號替換,一次二級星號替換)。而頻繁的數(shù)據(jù)庫查詢將造成對計算機(jī)資源的極大浪費(fèi)。
      如果將黑白名單項全部緩存到內(nèi)存中,勢必占用較多內(nèi)存,不適合黑白名單較大的情況。

      發(fā)明內(nèi)容
      本發(fā)明要解決的技術(shù)問題在于,針對上述的黑白名單查詢中占用較多資源并且效率較低的問題,提供一種快速查詢黑白名單的系統(tǒng)及方法。
      本發(fā)明解決上述技術(shù)問題的技術(shù)方案是,提供一種快速查詢黑白名單的系統(tǒng),包括用于查詢黑白名單中是否包括待檢測關(guān)鍵字的查詢單元,還包括數(shù)組創(chuàng)建單元,用于將黑白名單中的所有關(guān)鍵字分別作運(yùn)算后根據(jù)運(yùn)算值生成數(shù)組;數(shù)組存儲單元,用于存儲所述數(shù)組創(chuàng)建單元創(chuàng)建的數(shù)組;匹配單元,用于將待測試的關(guān)鍵字作運(yùn)算后將所述待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組存儲單元中的數(shù)組進(jìn)行比對,并在待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配時,使查詢單元查詢黑白名單中是否存在待測試的關(guān)鍵字。
      在本發(fā)明所述的一種快速查詢黑白名單的系統(tǒng)中,所述數(shù)組創(chuàng)建單元進(jìn)一步包括數(shù)組生成單元,用于生成數(shù)組,所述生成的數(shù)組的每一位都為0;第一運(yùn)算單元,用于依次將黑白名單中的每一關(guān)鍵字作運(yùn)算;第一拆分單元,用于將所述運(yùn)算所得運(yùn)算值的多個字節(jié)拆分為多組數(shù)值;數(shù)組維護(hù)單元,用于將所述數(shù)組中與所述第一拆分單元拆分獲得的多組數(shù)值對應(yīng)的位分別設(shè)置為1。
      在本發(fā)明所述的一種快速查詢黑白名單的系統(tǒng)中,所述匹配單元進(jìn)一步包括第二運(yùn)算單元,用于將待測試的關(guān)鍵字作運(yùn)算;第二拆分單元,用于將待測試關(guān)鍵字運(yùn)算值的多個字節(jié)拆分為多組數(shù)值;比較單元,分別查詢并判斷所述數(shù)組中與拆分待測試關(guān)鍵字運(yùn)算值獲得的多組數(shù)值對應(yīng)的位是否為1,若所述數(shù)組中所有對應(yīng)的位都為1,則確定待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配,使查詢單元查詢黑白名單中是否存在待測試的關(guān)鍵字。
      在本發(fā)明所述的一種快速查詢黑白名單的系統(tǒng)中,還包括關(guān)鍵字拆分單元,用于在所述比較單元判斷數(shù)組中對應(yīng)的位中包括0且待測試關(guān)鍵可拆分時,或者在查詢單元確認(rèn)所述待測試關(guān)鍵字不存在于黑白名單中且待測試關(guān)鍵可拆分時,拆分所述待測試關(guān)鍵字,并使所述匹配單元將拆分后的待測試關(guān)鍵字與數(shù)組進(jìn)行匹配。
      在本發(fā)明所述的一種快速查詢黑白名單的系統(tǒng)中,所述數(shù)組創(chuàng)建單元和匹配單元對關(guān)鍵字所作運(yùn)算為哈希運(yùn)算,所述運(yùn)算值為哈希值,所述數(shù)組生成單元生成的數(shù)組中位的數(shù)量不小于黑白名單中關(guān)鍵字?jǐn)?shù)量的2倍。
      本發(fā)明還提供一種快速查詢黑白名單的方法,包括以下步驟(a)將黑白名單中的所有關(guān)鍵字分別作運(yùn)算后根據(jù)運(yùn)算值生成數(shù)組;(b)將待測試的關(guān)鍵字作運(yùn)算,并將所述待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組進(jìn)行比對,若待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配,則執(zhí)行步驟(c);(c)查詢黑白名單,并判斷所述待測試的關(guān)鍵字是否存在于黑白名單中,若所述待測試的關(guān)鍵字存在于黑白名單中,則執(zhí)行步驟(d);(d)根據(jù)黑白名單策略對初始關(guān)鍵字進(jìn)行操作。
      在本發(fā)明所述的一種快速查詢黑白名單的方法中,所述步驟(a)進(jìn)一步包括(a1)生成數(shù)組,并將該數(shù)組中的所有位設(shè)置為0;(a2)依次將黑白名單中的每一關(guān)鍵字作運(yùn)算;
      (a3)將得到的每一運(yùn)算值的多個字節(jié)分為多組數(shù)值;(a4)將所述數(shù)組中與步驟(a3)中的多組值對應(yīng)的位分別設(shè)置為1。
      所述步驟(b)進(jìn)一步包括(b1)將待測試的關(guān)鍵字作運(yùn)算;(b2)將待測試的關(guān)鍵字的運(yùn)算值的多個字節(jié)分為多組數(shù)值;(b3)分別查詢并判斷所述數(shù)組中與步驟(b2)中多組值對應(yīng)的位是否為1,若所述數(shù)組中所有對應(yīng)的位都為1,則確定待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配,執(zhí)行步驟(c)。
      在本發(fā)明所述的一種快速查詢黑白名單的方法中,所述步驟(b3)進(jìn)一步包括(b31)若所述數(shù)組中對應(yīng)的位中包括0,則判斷所述待測試關(guān)鍵是否可以拆分,若可以拆分,則執(zhí)行步驟(b32);否則確定初始待測試關(guān)鍵字不在黑白名單中,并執(zhí)行步驟(d);(b32)拆分所述待測試關(guān)鍵字,并將拆分獲得的關(guān)鍵字作為待測試關(guān)鍵字,返回步驟(b1)。
      在本發(fā)明所述的一種快速查詢黑白名單的方法中,所述步驟(a)和步驟(b)中的運(yùn)算為哈希運(yùn)算,所述運(yùn)算值為哈希值,所述步驟(a1)中的數(shù)組大小為8K字節(jié),所述步驟(a3)及所述步驟(b2)中,所述哈希值的每兩個字節(jié)組成一組,共分為8組。
      在本發(fā)明所述的一種快速查詢黑白名單的方法中,所述步驟(c)中進(jìn)一步包括(c1)若所述待測試關(guān)鍵字不存在于黑白名單中,判斷所述待測試關(guān)鍵是否可以拆分,若可以拆分,則執(zhí)行步驟(c2);否則確定初始待測試關(guān)鍵字不在黑白名單中,并執(zhí)行步驟(d);(c2)拆分所述待測試關(guān)鍵字,并將拆分獲得的關(guān)鍵字作為待測試關(guān)鍵字,返回步驟(b)。
      本發(fā)明一種快速查詢黑白名單的系統(tǒng)及方法,通過待測試關(guān)鍵字的運(yùn)算值比對后再查詢黑白名單,減少了查詢過程中對數(shù)據(jù)庫中黑白名單的訪問,實(shí)現(xiàn)了快速判定待測試關(guān)鍵字的黑白名單狀態(tài)。本發(fā)明對于分級通配符下的黑白名單查詢效果較佳,且僅占用少量內(nèi)存。


      下面將結(jié)合附圖及實(shí)施例對本發(fā)明作進(jìn)一步說明,附圖中圖1是現(xiàn)有查詢黑白名單的流程示意圖;圖2是本發(fā)明一種快速查詢黑白名單的系統(tǒng)實(shí)施例的結(jié)構(gòu)示意圖;圖3是圖2中數(shù)組創(chuàng)建單元的結(jié)構(gòu)示意圖;圖4是圖2中匹配單元的結(jié)構(gòu)示意圖;圖5是本發(fā)明一種快速查詢黑白名單的方法實(shí)施例的流程圖;圖6是圖5中創(chuàng)建數(shù)組的流程圖;圖7是圖5中判斷哈希值是否匹配數(shù)組的流程圖。
      具體實(shí)施例方式
      本發(fā)明通過一個數(shù)組記錄黑白名單中每一關(guān)鍵字(包括完整的URL、域名和被星號替換過的情況),并由該數(shù)組過濾掉不在黑白名單表的情況,從而在外層屏蔽對數(shù)據(jù)庫的過多訪問。
      如圖2所示,是本發(fā)明一種快速查詢黑白名單的系統(tǒng)實(shí)施例的結(jié)構(gòu)示意圖。該系統(tǒng)包括數(shù)組創(chuàng)建單元21、數(shù)組存儲單元22、匹配單元23、查詢單元24、黑白名單存儲單元25以及執(zhí)行單元26。
      黑白名單存儲單元25用于存儲黑白名單。該黑白名單中的關(guān)鍵字根據(jù)用戶添加的內(nèi)容生成,包括完整的URL、域名、通配符替換后的域名等。查詢單元24用于查詢黑白名單存儲單元25中的黑白名單是否包括待檢測關(guān)鍵字。執(zhí)行單元26用于根據(jù)查詢單元24的查詢結(jié)果執(zhí)行相關(guān)操作,例如在查詢單元24查詢到待檢測關(guān)鍵字在黑名單中時,阻止對該關(guān)鍵字的訪問;在查詢單元24查詢到待檢測關(guān)鍵字在白名單中時,直接通過對該關(guān)鍵字的訪問;在查詢單元24查詢未在黑白名單中查詢到待檢測關(guān)鍵字時,根據(jù)預(yù)定策略阻止或通過對該關(guān)鍵字的訪問。上述的黑白名單存儲單元25、查詢單元24以及執(zhí)行單元26與現(xiàn)有的黑白名單方案中的實(shí)現(xiàn)方式類似。
      數(shù)組創(chuàng)建單元21用于將黑白名單中的所有關(guān)鍵字分別作哈希運(yùn)算,并根據(jù)哈希值生成數(shù)組。在本實(shí)施例中,采用高質(zhì)量哈希函數(shù)MD5函數(shù),經(jīng)過哈希運(yùn)算后的哈希值為16字節(jié)。當(dāng)然,在具體實(shí)現(xiàn)時,也可采用其它哈希函數(shù)。
      數(shù)組存儲單元22用于存儲數(shù)組創(chuàng)建單元21創(chuàng)建的數(shù)組。該數(shù)組存儲單元22位于內(nèi)存,從而可實(shí)現(xiàn)快速訪問。當(dāng)然,數(shù)組創(chuàng)建單元21創(chuàng)建數(shù)組后,可先存儲于硬盤,在執(zhí)行黑白名單查詢時再將數(shù)組導(dǎo)入數(shù)組存儲單元22。
      匹配單元23用于將待測試的關(guān)鍵字作哈希運(yùn)算后,將該待測試的關(guān)鍵字哈希值與數(shù)組存儲單元22中的數(shù)組進(jìn)行比對,并在待測試的關(guān)鍵字的哈希值與數(shù)組匹配時,使查詢單元24查詢黑白名單中是否存在該待測試的關(guān)鍵字。
      當(dāng)然,在具體實(shí)現(xiàn)時,并不限于通過數(shù)組存儲黑白名單中關(guān)鍵字對應(yīng)的哈希值,也可通過列表等方式存儲。
      如圖3所示,在本實(shí)施例中,數(shù)組創(chuàng)建單元21進(jìn)一步包括數(shù)組生成單元214、第一哈希運(yùn)算單元211、第一拆分單元212以及數(shù)組維護(hù)單元213。
      數(shù)組生成單元214用于生成數(shù)組,該生成的數(shù)組的每一位都為0。在本實(shí)施例中,數(shù)組的大小為8K字節(jié)。
      第一哈希運(yùn)算單元211用于依次將黑白名單中的每一關(guān)鍵字作哈希運(yùn)算。在本實(shí)施例中,第一哈希運(yùn)算單元211采用MD5函數(shù),每一關(guān)鍵字經(jīng)哈希運(yùn)算后的哈希值為16字節(jié)。
      第一拆分單元212用于將運(yùn)算所得哈希值的多個字節(jié)拆分為多組數(shù)值。在本實(shí)施例中,第一拆分單元212將16字節(jié)的哈希值中每兩個字節(jié)為一組,共拆分成8組數(shù)值。每組數(shù)值為兩個字節(jié)共16位,與數(shù)組的大小對相應(yīng)。
      數(shù)組維護(hù)單元213用于將所述數(shù)組中與第一拆分單元拆分獲得的多組數(shù)值對應(yīng)的位分別設(shè)置為1。
      如圖4所示,在本實(shí)施例中,匹配單元23進(jìn)一步包括第二哈希運(yùn)算單元231、第二拆分單元232以及比較單元233。
      第二哈希運(yùn)算單元231用于將待測試的關(guān)鍵字作哈希運(yùn)算。同樣,第二哈希運(yùn)算單元231采用MD5函數(shù),每一關(guān)鍵字經(jīng)哈希運(yùn)算后的哈希值為16字節(jié)。
      第二拆分單元232用于將待測試關(guān)鍵字哈希值的多個字節(jié)拆分為多組數(shù)值。同樣,第二拆分單元232將16字節(jié)的哈希值中每兩個字節(jié)為一組,共拆分成8組數(shù)值。
      比較單元233用于分別查詢并判斷數(shù)組中與拆分待測試關(guān)鍵字哈希值獲得的8組數(shù)值對應(yīng)的位是否為1,若數(shù)組中所有對應(yīng)的8位都為1,則確定待測試的關(guān)鍵字的哈希值與數(shù)組匹配,使查詢單元24查詢黑白名單中是否存在待測試的關(guān)鍵字。
      當(dāng)然,上述的數(shù)組大小并不限于8K,且每一哈希值被分成的組數(shù)在具體應(yīng)用中可以不同。上述數(shù)組存在假陽性(即待測試關(guān)鍵字的哈希值與數(shù)組匹配而在黑白名單中不存在該關(guān)鍵字)的情況,當(dāng)數(shù)組中值為1的位太多時,假陽性的概率會很高。為了達(dá)到最佳的黑白名單查詢,數(shù)組中位的數(shù)量應(yīng)不小于黑白名單中關(guān)鍵字的數(shù)量的2倍。另外假陽性的概率還與哈希值分成的組數(shù)有關(guān),組數(shù)越多則概率越小。經(jīng)統(tǒng)計,當(dāng)數(shù)組中值為0和1位的比率是1∶1時,假陽性概率和所分成的組數(shù)(k)基本滿足下列關(guān)系假陽性百分率=Nk,其中N為數(shù)組的飽和度,即數(shù)組中值為1的位占數(shù)組中總位數(shù)的比率,例如當(dāng)數(shù)組中值為0和1的位的比率為1∶1時,數(shù)組飽和度為50%。k為哈希值被分成的組數(shù)。
      在本發(fā)明一種快速查詢黑白名單的系統(tǒng)的另外一個實(shí)施例中,還包括關(guān)鍵字拆分單元,用于在比較單元233判斷數(shù)組中對應(yīng)的位中包括0且待測試關(guān)鍵可拆分時,或者在查詢單元24確認(rèn)所述待測試關(guān)鍵字不存在于黑白名單中且待測試關(guān)鍵可拆分時,拆分待測試關(guān)鍵字(例如拆分為域名或帶有通配符的域名等),并使匹配單元23將拆分后的待測試關(guān)鍵字與數(shù)組進(jìn)行比對。
      如圖5所示,是本發(fā)明一種快速查詢黑白名單的方法實(shí)施例的流程圖,其具體包括以下步驟步驟S51將黑白名單中的所有關(guān)鍵字分別作哈希運(yùn)算后根據(jù)哈希值生成數(shù)組。在本實(shí)施例中,采用MD5函數(shù)進(jìn)行哈希運(yùn)算,經(jīng)過哈希運(yùn)算后的哈希值為16字節(jié)。
      步驟S52將待測試的關(guān)鍵字作哈希運(yùn)算。
      步驟S53將所述待測試的關(guān)鍵字的哈希值與數(shù)組進(jìn)行比對,若待測試的關(guān)鍵字的哈希值與所述數(shù)組匹配,則執(zhí)行步驟S55;否則執(zhí)行步驟S54。
      步驟S54進(jìn)一步判斷待測試關(guān)鍵字是否可拆分。若該待測試關(guān)鍵字可拆分,則執(zhí)行步驟S57;否則執(zhí)行步驟S56。
      步驟S55查詢黑白名單,并判斷所述待測試的關(guān)鍵字是否存在于黑白名單中。若所述待測試的關(guān)鍵字存在于黑白名單中,則執(zhí)行步驟S56;若待測試關(guān)鍵字不存在于黑白名單中,則進(jìn)一步判斷待測試關(guān)鍵是否可以拆分,若可以拆分,則執(zhí)行步驟S57;否則確定初始待測試關(guān)鍵字不在黑白名單中,并執(zhí)行步驟S56。
      步驟S56根據(jù)黑白名單策略對初始關(guān)鍵字進(jìn)行操作。
      步驟S57拆分待測試關(guān)鍵字,并執(zhí)行步驟S52。例如將完整的URL拆分為域名或者包含通配符的URL。
      如圖6所示,上述圖5中的步驟S51進(jìn)一步包括步驟S61生成數(shù)組,并將該數(shù)組中的所有位設(shè)置為0。
      步驟S62依次將黑白名單中的每一關(guān)鍵字作哈希運(yùn)算。
      步驟S63將得到的每一哈希值的多個字節(jié)分為多組數(shù)值。
      步驟S64將所述數(shù)組中與步驟S63中的多組值對應(yīng)的位分別設(shè)置為1。
      如圖7所示,圖5中的步驟S53進(jìn)一步包括步驟S71將待測試的關(guān)鍵字作哈希運(yùn)算。
      步驟S72將待測試的關(guān)鍵字的哈希值的多個字節(jié)分為多組數(shù)值。
      步驟S73分別查詢并判斷所述數(shù)組中與步驟S72中多組值對應(yīng)的位是否為1。若數(shù)組中所有對應(yīng)的位都為1,則確定待測試的關(guān)鍵字的哈希值與所述數(shù)組匹配,執(zhí)行步驟S55;若數(shù)組中對應(yīng)的位中包括0,則判斷待測試關(guān)鍵字是否可以拆分,若可以拆分,則拆分待測試關(guān)鍵字,并將拆分獲得的關(guān)鍵字作為待測試關(guān)鍵字,返回步驟S71;否則確定初始待測試關(guān)鍵字不在黑白名單中,并執(zhí)行步驟S56。
      當(dāng)然,本發(fā)明并不限于上述實(shí)施例的哈希算法,任何可將任意長度二進(jìn)制值映射為固定長度的較小二進(jìn)制值的算法均可代替上述的哈希算法,并實(shí)現(xiàn)本發(fā)明的技術(shù)效果,例如常用的編碼算法或明文(ASCII、Unicode等)轉(zhuǎn)換等。
      以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
      ,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。
      權(quán)利要求
      1.一種快速查詢黑白名單的系統(tǒng),包括用于查詢黑白名單中是否包括待檢測關(guān)鍵字的查詢單元,其特征在于,還包括數(shù)組創(chuàng)建單元,用于將黑白名單中的所有關(guān)鍵字分別作運(yùn)算后根據(jù)運(yùn)算值生成數(shù)組;數(shù)組存儲單元,用于存儲所述數(shù)組創(chuàng)建單元創(chuàng)建的數(shù)組;匹配單元,用于將待測試的關(guān)鍵字作運(yùn)算后將所述待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組存儲單元中的數(shù)組進(jìn)行比對,并在待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配時,使查詢單元查詢黑白名單中是否存在待測試的關(guān)鍵字。
      2.根據(jù)權(quán)利要求1所述的一種快速查詢黑白名單的系統(tǒng),其特征在于,所述數(shù)組創(chuàng)建單元進(jìn)一步包括數(shù)組生成單元,用于生成數(shù)組,所述生成的數(shù)組的每一位都為0;第一運(yùn)算單元,用于依次將黑白名單中的每一關(guān)鍵字作運(yùn)算;第一拆分單元,用于將所述運(yùn)算所得運(yùn)算值的多個字節(jié)拆分為多組數(shù)值;數(shù)組維護(hù)單元,用于將所述數(shù)組中與所述第一拆分單元拆分獲得的多組數(shù)值對應(yīng)的位分別設(shè)置為1。
      3.根據(jù)權(quán)利要求2所述的一種快速查詢黑白名單的系統(tǒng),其特征在于,所述匹配單元進(jìn)一步包括第二運(yùn)算單元,用于將待測試的關(guān)鍵字作運(yùn)算;第二拆分單元,用于將待測試關(guān)鍵字運(yùn)算值的多個字節(jié)拆分為多組數(shù)值;比較單元,分別查詢并判斷所述數(shù)組中與拆分待測試關(guān)鍵字運(yùn)算值獲得的多組數(shù)值對應(yīng)的位是否為1,若所述數(shù)組中所有對應(yīng)的位都為1,則確定待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配,使查詢單元查詢黑白名單中是否存在待測試的關(guān)鍵字。
      4.根據(jù)權(quán)利要求3所述的一種快速查詢黑白名單的系統(tǒng),其特征在于,還包括關(guān)鍵字拆分單元,用于在所述比較單元判斷數(shù)組中對應(yīng)的位中包括0且待測試關(guān)鍵可拆分時,或者在查詢單元確認(rèn)所述待測試關(guān)鍵字不存在于黑白名單中且待測試關(guān)鍵可拆分時,拆分所述待測試關(guān)鍵字,并使所述匹配單元將拆分后的待測試關(guān)鍵字與數(shù)組進(jìn)行匹配。
      5.根據(jù)權(quán)利要求3所述的一種快速查詢黑白名單的系統(tǒng),其特征在于,所述數(shù)組創(chuàng)建單元和匹配單元對關(guān)鍵字所作運(yùn)算為哈希運(yùn)算,所述運(yùn)算值為哈希值,所述數(shù)組生成單元生成的數(shù)組中位的數(shù)量不小于黑白名單中關(guān)鍵字?jǐn)?shù)量的2倍。
      6.一種快速查詢黑白名單的方法,其特征在于,包括以下步驟(a)將黑白名單中的所有關(guān)鍵字分別作運(yùn)算后根據(jù)運(yùn)算值生成數(shù)組;(b)將待測試的關(guān)鍵字作運(yùn)算,并將所述待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組進(jìn)行比對,若待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配,則執(zhí)行步驟(c);(c)查詢黑白名單,并判斷所述待測試的關(guān)鍵字是否存在于黑白名單中,若所述待測試的關(guān)鍵字存在于黑白名單中,則執(zhí)行步驟(d);(d)根據(jù)黑白名單策略對初始關(guān)鍵字進(jìn)行操作。
      7.根據(jù)權(quán)利要求6所述的一種快速查詢黑白名單的方法,其特征在于,所述步驟(a)進(jìn)一步包括(a1)生成數(shù)組,并將該數(shù)組中的所有位設(shè)置為0;(a2)依次將黑白名單中的每一關(guān)鍵字作運(yùn)算;(a3)將得到的每一運(yùn)算值的多個字節(jié)分為多組數(shù)值;(a4)將所述數(shù)組中與步驟(a3)中的多組值對應(yīng)的位分別設(shè)置為1。所述步驟(b)進(jìn)一步包括(b1)將待測試的關(guān)鍵字作運(yùn)算;(b2)將待測試的關(guān)鍵字的運(yùn)算值的多個字節(jié)分為多組數(shù)值;(b3)分別查詢并判斷所述數(shù)組中與步驟(b2)中多組值對應(yīng)的位是否為1,若所述數(shù)組中所有對應(yīng)的位都為1,則確定待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配,執(zhí)行步驟(c)。
      8.根據(jù)權(quán)利要求7所述的一種快速查詢黑白名單的方法,其特征在于,所述步驟(b3)進(jìn)一步包括(b31)若所述數(shù)組中對應(yīng)的位中包括0,則判斷所述待測試關(guān)鍵是否可以拆分,若可以拆分,則執(zhí)行步驟(b32);否則確定初始待測試關(guān)鍵字不在黑白名單中,并執(zhí)行步驟(d);(b32)拆分所述待測試關(guān)鍵字,并將拆分獲得的關(guān)鍵字作為待測試關(guān)鍵字,返回步驟(b1)。
      9.根據(jù)權(quán)利要求6或7所述的一種快速查詢黑白名單的方法,其特征在于,所述步驟(a)和步驟(b)中的運(yùn)算為哈希運(yùn)算,所述運(yùn)算值為哈希值,所述步驟(a1)中的數(shù)組大小為8K字節(jié),所述步驟(a3)及所述步驟(b2)中,所述哈希值的每兩個字節(jié)組成一組,共分為8組。
      10.根據(jù)權(quán)利要求6所述的一種快速查詢黑白名單的方法,其特征在于,所述步驟(c)中進(jìn)一步包括(c1)若所述待測試關(guān)鍵字不存在于黑白名單中,判斷所述待測試關(guān)鍵是否可以拆分,若可以拆分,則執(zhí)行步驟(c2);否則確定初始待測試關(guān)鍵字不在黑白名單中,并執(zhí)行步驟(d);(c2)拆分所述待測試關(guān)鍵字,并將拆分獲得的關(guān)鍵字作為待測試關(guān)鍵字,返回步驟(b)。
      全文摘要
      本發(fā)明公開了一種快速查詢黑白名單的系統(tǒng),包括用于查詢黑白名單中是否包括待檢測關(guān)鍵字的查詢單元,還包括數(shù)組創(chuàng)建單元,用于將黑白名單中的所有關(guān)鍵字分別作運(yùn)算后根據(jù)運(yùn)算值生成數(shù)組;數(shù)組存儲單元,用于存儲所述數(shù)組創(chuàng)建單元創(chuàng)建的數(shù)組;匹配單元,用于將待測試的關(guān)鍵字作運(yùn)算后將所述待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組存儲單元中的數(shù)組進(jìn)行比對,并在待測試的關(guān)鍵字的運(yùn)算值與所述數(shù)組匹配時,使查詢單元查詢黑白名單中是否存在待測試的關(guān)鍵字。本發(fā)明還提供一種對應(yīng)的方法。本發(fā)明通過待測試關(guān)鍵字的哈希值比對后再查詢黑白名單,減少了查詢過程中對數(shù)據(jù)庫中黑白名單的訪問,實(shí)現(xiàn)了快速判定待測試關(guān)鍵字的黑白名單狀態(tài)。
      文檔編號G06F17/30GK101079042SQ20061006455
      公開日2007年11月28日 申請日期2006年12月28日 優(yōu)先權(quán)日2006年12月28日
      發(fā)明者鄧君 申請人:騰訊科技(深圳)有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1