亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        一種基于移位取反和加法的字符串哈希算法*

        2022-11-10 06:40:02李立亞遲榮華
        計(jì)算機(jī)時代 2022年11期
        關(guān)鍵詞:字符串哈希移位

        李立亞,吳 麗,遲榮華

        (無錫科技職業(yè)學(xué)院人工智能學(xué)院,江蘇 無錫 214028)

        0 引言

        在計(jì)算機(jī)數(shù)據(jù)處理技術(shù)中,哈希算法將任意長度數(shù)據(jù)塊映射為較短的固定長度的二進(jìn)制值,即哈希值。只要是更改數(shù)據(jù)塊的任何字節(jié),都會產(chǎn)生不同的哈希值,反向找到同一哈希值的不同輸入,在計(jì)算上代價(jià)巨大。因此,哈希算法廣泛應(yīng)用在數(shù)據(jù)的完整性檢驗(yàn)、數(shù)據(jù)快速查找、構(gòu)造安全的數(shù)據(jù)結(jié)構(gòu)等。

        哈希算法的實(shí)現(xiàn)方式有加減法、位運(yùn)算、乘法除法、查表、混合實(shí)現(xiàn)等,不同實(shí)現(xiàn)方式在運(yùn)行速度和哈希效果上有所差異。比較常見的算法有MD5、SHA-1、BKDRHash、APHash 等。不同的哈希算法有不同的特性,適用不同的場合。文獻(xiàn)[1]對哈希函數(shù)的迭代結(jié)構(gòu)和壓縮函數(shù)進(jìn)行了研究,可以構(gòu)造安全性較高的哈希算法。文獻(xiàn)[2]在哈希計(jì)算過程中加入了隨機(jī)性,提高了哈希算法的安全性。文獻(xiàn)[3]利用二元方程構(gòu)造了一種哈希算法,具備較好的效果和性能。文獻(xiàn)[4]利用明文信息進(jìn)行迭代次數(shù)控制,增加了隨機(jī)性。文獻(xiàn)[5]針對物聯(lián)網(wǎng)設(shè)備設(shè)計(jì)了一種輕量級哈希函數(shù),在安全和性能上做了折中,犧牲部分性能,提高安全性。文獻(xiàn)[6]使用字典法構(gòu)造了一種完美哈希函數(shù),效果較好,但算法復(fù)雜和對工作空間要求高。文獻(xiàn)[7]從理論上證明了采用異或運(yùn)算和位移運(yùn)算能夠提供較好的哈希值隨機(jī)特性,并用這兩種基本操作,提出了異或循環(huán)哈希算法,在性能和效率上有優(yōu)勢。文獻(xiàn)[8]設(shè)計(jì)了一種基于異或運(yùn)算、并加入偽隨機(jī)移位的哈希函數(shù),應(yīng)用在以TCP 網(wǎng)絡(luò)連接管理的哈希表中,取得了較好的效果。

        本文通過移位、取反、和加法加速數(shù)據(jù)混淆過程,設(shè)計(jì)了一種快速字符串哈希算法,算法結(jié)構(gòu)簡明、編程實(shí)現(xiàn)簡單。與文獻(xiàn)[9]提出的BKDRHash 算法相比,本算法在效果上相當(dāng)?shù)那闆r下,速度上具有10%左右優(yōu)勢。

        1 算法設(shè)計(jì)

        采用的混淆計(jì)算手段越多、混淆過程的計(jì)算參數(shù)調(diào)整越靈活、越容易獲得較好的哈希效果,但計(jì)算過多又會影響算法性能。本算法在位混淆設(shè)計(jì)上,使用短周期計(jì)算指令的操作完成,減少計(jì)算數(shù)量。

        1.1 計(jì)算流程

        本文哈希算法以位運(yùn)算、加法為基礎(chǔ)構(gòu)造。如圖1 所示。中間結(jié)果左移、取反,然后加字符(改進(jìn)算法再加中間一次結(jié)果),循環(huán)往復(fù),直至處理完畢所有數(shù)據(jù),計(jì)算出Hash結(jié)果。通過實(shí)驗(yàn)測試搜索左移位數(shù)因子,左移7位效果最佳。

        算法設(shè)計(jì)上分為基本型和改進(jìn)型兩種:基本型算法速度更快,混淆效果稍弱,速度更快。改進(jìn)型算法再加一次中間哈希碼,效果更好,速度稍弱。

        1.2 位混淆設(shè)計(jì)思路

        本算法計(jì)算過程使用的數(shù)據(jù)位字長基于標(biāo)準(zhǔn)字長,與CPU 字長、或程序設(shè)計(jì)語言支持的字長一致,比如32位、64位。設(shè)計(jì)思路:①移位和取反只使用一次,移位和取反可以迅速地改變數(shù)據(jù)位,但對數(shù)據(jù)位的混淆功能有限;②最多使用兩次加法操作,進(jìn)行混淆。

        計(jì)算次序設(shè)計(jì):移位操作會損失數(shù)據(jù)位,取反操作僅對位取反,加法操作進(jìn)行位混淆擴(kuò)散功能,因此按先移位、再取反,最后做加法的次序進(jìn)行計(jì)算。

        本文采取對中間結(jié)果進(jìn)行移位取反,再加字符串中字符的方案設(shè)計(jì)。移位操作將低位補(bǔ)0,取反時,這些位變?yōu)?,從而增加1 的數(shù)量。如此,在做加法時可以獲得較好的混淆擴(kuò)散效果。

        計(jì)算公式為:中間哈希碼=中間哈希碼左移7位后取反+字符+中間哈希碼。

        基本型混淆擴(kuò)散過程如圖1所示。

        圖1 混淆擴(kuò)散過程圖

        1.3 算法復(fù)雜度分析

        本算法對空間需求為幾個整型變量的空間。

        計(jì)算復(fù)雜度,每輪迭代都有中間結(jié)果移位、取反、加操作運(yùn)算,計(jì)算復(fù)雜度為O(N+N+N)。與BKDR 算法相比,BKDR 算法計(jì)算復(fù)雜度為O(N+N),但BKDR中使用了乘法,乘法指令周期數(shù)遠(yuǎn)大于位運(yùn)算和加法。因此本算法在指令周期數(shù)上具有優(yōu)勢。

        2 仿真實(shí)驗(yàn)

        BKDR快速哈希算法,在速度、哈希效果上都非常優(yōu)秀,該算法來自于Brian Kernighan 和Dennis Ritchie 合著的《The C Programming Language》專著。本文以該算法為參照對象進(jìn)行對比測試。

        兩個算法均用VC#進(jìn)行程序編碼。BKDR快速哈希算法選用種子值131,算法代碼如下:

        2.1 實(shí)驗(yàn)方法及結(jié)果

        ⑴性能測試

        分別用大小兩種數(shù)據(jù)塊來測試性能:①測試20個字長的數(shù)據(jù)塊1000 萬次;②測試1000 萬個字長的數(shù)據(jù)塊100次。

        分別在WIN7 系統(tǒng)和WIN10 系統(tǒng)兩臺PC 上進(jìn)行了測試。WIN7 系統(tǒng)配置為Intel i5-2400 CPU,主頻為3.1GHz,最大睿頻3.4Ghz。WIN10 系統(tǒng)配置為Intel i5-8400 CPU,主頻為2.80GHz,最大睿頻4.0Ghz。

        在兩個系統(tǒng)平臺上測試過程中,發(fā)現(xiàn)WIN7 系統(tǒng)平臺測試結(jié)果比較穩(wěn)定,變化很小。而WIN10系統(tǒng)平臺測試結(jié)果穩(wěn)定性較差,變化較大。推測是WIN7 平臺CPU 睿頻范圍小、WIN10 平臺CPU 睿頻范圍大,測試過程中CPU睿頻程度不同導(dǎo)致測試結(jié)果穩(wěn)定性不同。

        經(jīng)過多次測試,選出偏離度較小的樣本數(shù)據(jù)做為測試結(jié)果,如表1和表2所示。

        表1 20個字長的數(shù)據(jù)塊1000萬次測試結(jié)果(單位:毫秒)

        表2 1000萬個字長的數(shù)據(jù)塊100次測試結(jié)果(單位:毫秒)

        對20 個字長的數(shù)據(jù)塊1000 萬次測試結(jié)果,兩個系統(tǒng)平臺的結(jié)果基本一致,本文設(shè)計(jì)的哈希算法比BKDR 哈希算法的性能高8%左右對1000 萬個字長的數(shù)據(jù)塊測試中,WIN10平臺上的速度比WIN7平臺慢,而WIN7 平臺上,本文算法的性能優(yōu)勢達(dá)到了10.5%左右。

        ⑵哈希效果測試

        哈希效果測試主要測試哈希沖突情況,沖突次數(shù)少的為優(yōu)。設(shè)計(jì)了兩類測試:第一類是直接測試,測試哈希碼沖突情況;第二類是映射測試,將哈希碼映射到一個數(shù)組上,看映射沖突情況。

        測試字符串的字符表由71個字符組成,71個字符如下:

        第一步,定長字符串測試。使用上述71 個字符,生成了26003571 個字符串,字符串長度為1、2、3、4、5的字符串個數(shù)分別為71、71×71=5041、71 ^3=357911、71^4=25411681、228867 個。用本論文哈希算法和BKDR 哈希算法計(jì)算這些字符串的哈希碼,均沒有沖突。

        第二步,隨機(jī)字符串及映射沖突測試。使用上述71 個字符隨機(jī)生成長度為1-50 的字符串240000 個,分別用本文哈希算法和BKDR 哈希算法計(jì)算哈希碼,并映射到尺寸為300000的數(shù)組上,檢驗(yàn)哈希碼沖突和映射沖突情況。12 次測試結(jié)果如表3 所示,本算法哈希碼沖突高一些,映射沖突相當(dāng)略高。

        表3 隨機(jī)字符串及映射沖突測試對比(單位:次)

        2.2 算法的改進(jìn)型

        基本型的隨機(jī)字符串的沖突測試中,哈希沖突效果稍差。原因是每輪計(jì)算過程中的左移操作,損失了中間結(jié)果的高7 位,并且字符高位都是0,無法充分對數(shù)據(jù)位進(jìn)行混淆和擴(kuò)散。

        改進(jìn)型再加一次中間哈希碼,增加了一個加法操作,可以在對性能影響不大的情況下,提升數(shù)據(jù)位的混淆和擴(kuò)散效果。隨機(jī)生成240000 個字符串映射到300000 個數(shù)組元素的部分測試結(jié)果如表4 所示,改進(jìn)型算法哈希效果與BKDR算法相當(dāng)。

        表4 改進(jìn)算法隨機(jī)字符串沖突測試對比(單位:次)

        本文還測試了隨機(jī)生成3000、8000、16000、24000個字符串映射到5000、10000、20000、30000 個數(shù)組元素,兩個算法效果也是相當(dāng)。

        改進(jìn)后的算法,因?yàn)槎嗔艘淮渭臃ú僮?,性能上會略慢。分別在上述WIN7 和WIN10 平臺上測試,WIN7 平臺性能比BKDR 算法快8%左右。在WIN10平臺兩個算法性能持,結(jié)合上面的性能測試,推測是在新的平臺中,乘法指令得到了優(yōu)化,使乘法運(yùn)算性能得到了提高。

        3 結(jié)束語

        本文針對字符串哈希計(jì)算需求,提出了一種快速哈希算法,本算法結(jié)構(gòu)簡單、易實(shí)現(xiàn)。在性能上優(yōu)于BKDR 哈希算法,在哈希效果上與BKDR 算法相當(dāng)。尤其是針對長度為5 及以下的字符串的哈希計(jì)算,使用本文基本型算法計(jì)算的哈希碼抗沖突效果與BKDR算法相當(dāng),在性能上有顯著優(yōu)勢。

        在對乘除法沒有顯著優(yōu)化的平臺上,比如嵌入式平臺和系統(tǒng)、單片機(jī)開發(fā)中,本算法與BKDR 相比,具有明顯的性能優(yōu)勢,在對計(jì)算功耗和性能比較敏感的應(yīng)用場合,使用本算法能節(jié)省8%-11%左右的算力消耗。

        本算法的提出,為快速字符串哈希算法,提供了一種新的實(shí)用方法。

        猜你喜歡
        字符串哈希移位
        再生核移位勒讓德基函數(shù)法求解分?jǐn)?shù)階微分方程
        大型總段船塢建造、移位、定位工藝技術(shù)
        Σ(X)上權(quán)移位算子的不變分布混沌性
        基于OpenCV與均值哈希算法的人臉相似識別系統(tǒng)
        多指離斷手指移位再植拇指25例
        基于維度分解的哈希多維快速流分類算法
        一種新的基于對稱性的字符串相似性處理算法
        基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
        一種基于Bigram二級哈希的中文索引結(jié)構(gòu)
        依據(jù)字符串匹配的中文分詞模型研究
        狠狠噜天天噜日日噜无码| 一区二区三区视频免费观看在线| 五月婷婷开心五月激情| 国产精品麻豆va在线播放| 男人扒开女人下面狂躁小视频| 久久亚洲国产中v天仙www| 亚洲第一页综合av免费在线观看| 人妖一区二区三区在线| 欧美四房播播| 国内大量揄拍人妻在线视频| 日韩AV无码乱伦丝袜一区| 国产精品自产拍在线18禁 | 色婷婷六月天| 日本精品国产1区2区3区| 久久99热只有频精品8国语| 成人午夜视频精品一区| 亚洲欧美精品91| 成人黄网站免费永久在线观看| 91精品人妻一区二区三区久久久| 香港三级精品三级在线专区| 欧美成人久久久| 日韩熟女精品一区二区三区视频 | 丝袜美腿一区二区在线观看| av免费播放网站在线| 亚洲综合国产一区二区三区| 亚洲中文字幕无码卡通动漫野外| 激情偷拍视频一区二区| 日本伊人精品一区二区三区 | 久久久久成人亚洲综合精品| 亚洲天堂av在线免费看| 国精产品一区一区二区三区mba| 国产亚洲人成a在线v网站| 久久久久久久久国内精品影视| 大陆成人精品自拍视频在线观看| 无码视频在线观看| 免费成人毛片| 国产精品久久久看三级| 东北少妇不戴套对白第一次| 亚洲综合无码一区二区| 激情五月天俺也去综合网| 亚洲精品国产第一区二区|