苑思明,鄭 晗,李俊杰(通訊作者)
(河北農(nóng)業(yè)大學(xué)理工學(xué)院 河北 滄州 061100)
二十一世紀(jì)是信息技術(shù)的時(shí)代,計(jì)算機(jī)網(wǎng)絡(luò)已深入的各個(gè)領(lǐng)域,其安全問(wèn)題尤為突顯。網(wǎng)絡(luò)用戶來(lái)自社會(huì)各階層,網(wǎng)絡(luò)中傳輸數(shù)據(jù)必須要有加密保護(hù)措施[1-2],而計(jì)算機(jī)數(shù)據(jù)加密算法是核心、重中之重。
目前主流的數(shù)據(jù)加密技術(shù)有DES、RSA、AES和橢圓加密算法[3]等。當(dāng)用戶A向B發(fā)送數(shù)據(jù)時(shí),使用某種加密算法,將明文變?yōu)槊芪模l(fā)送到計(jì)算機(jī)網(wǎng)絡(luò);用戶B接收到密文,使用對(duì)應(yīng)的解密算法解密,恢復(fù)明文原始內(nèi)容。在實(shí)際通信中,明文碼長(zhǎng)一般較長(zhǎng),占用空間大,明文在網(wǎng)絡(luò)傳輸過(guò)程中易被截獲、篡改,且加密比較繁瑣,耗時(shí)較長(zhǎng)。故本文提出對(duì)基于哈夫曼壓縮的、MD5算法數(shù)據(jù)壓縮加密方法,即為傳送的數(shù)據(jù)構(gòu)建哈夫曼樹(shù),根據(jù)哈夫曼樹(shù)對(duì)明文壓縮編碼,然后將得到的壓縮明文通過(guò)單向MD5哈希散列算法進(jìn)行加密。
哈夫曼編碼是基于哈夫曼二叉樹(shù)構(gòu)建的無(wú)重復(fù)前綴的、電文總長(zhǎng)最短的二進(jìn)制前綴碼數(shù)據(jù)。將報(bào)文中n種字符出現(xiàn)的次數(shù)作為二叉樹(shù)的葉子節(jié)點(diǎn),即為wi,各自編碼長(zhǎng)度設(shè)為li,則計(jì)算報(bào)文中的n種字符總長(zhǎng)度WPL[4-6],如公式(1-1)所示。

WPL值最小時(shí),構(gòu)建的二叉樹(shù)即為哈夫曼樹(shù)。構(gòu)建好的哈夫曼樹(shù),從根節(jié)點(diǎn)到每個(gè)葉子節(jié)點(diǎn)都有一條路徑,此時(shí)用二進(jìn)制數(shù)字進(jìn)行編碼,即從根節(jié)點(diǎn)開(kāi)始,左子樹(shù)路徑都用“0”編碼,右子樹(shù)都用“1”來(lái)編碼,這樣每條路徑都有唯一的前綴編碼。
哈夫曼樹(shù)編碼能較好的實(shí)現(xiàn)對(duì)數(shù)據(jù)文件的壓縮,被廣泛的用于計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)加密過(guò)程中。
一般的數(shù)據(jù)加密模型如圖1所示。用A向B發(fā)送明文數(shù)據(jù)D,經(jīng)過(guò)加密算法E加密后,得到密文Y[1],加密過(guò)程如圖1所示。加密函數(shù)如公式(2-1)所示。

圖1 數(shù)據(jù)加密模型

(1)MD5算法簡(jiǎn)介
MD5的全稱(chēng)是Message-Digest Algorithm,即信息摘要算法,是最常見(jiàn)的單向散列(Hash)函數(shù)[7-9],把明文的數(shù)組進(jìn)行加密后,輸出密文數(shù)組,而根據(jù)密文逆向推出多個(gè)明文,所以MD5加密算法具有不可逆性和碰撞性[10]。
(2)MD5算法的分析過(guò)程
MD5算法的分析過(guò)程如圖2所示。

圖2 MD5加密算法過(guò)程
用戶A向B發(fā)送的明文,先通過(guò)哈夫曼樹(shù)編碼的第一層壓縮后,然后再通過(guò)單向的MD5算法的加密后,得到密文,最后再加上密鑰,然后把結(jié)果送向用戶B。
用戶加密后的密文在通信介質(zhì)上傳輸時(shí),非法人員通過(guò)某種技術(shù)手段截獲后,采用常用的窮舉暴力破解法,將明文通過(guò)MD5算法得到所有的密文數(shù)據(jù)庫(kù),將截獲的密文與數(shù)據(jù)庫(kù)明文密文對(duì)應(yīng)列表查詢匹配,以獲取截獲的密文對(duì)應(yīng)的明文。
MD5算法因?yàn)槿菀妆黄平饨?jīng)常不被使用,可通過(guò)壓縮函數(shù)MD5c來(lái)對(duì)MD5算法進(jìn)行改進(jìn)。步驟如下。

Si和Yj是與步長(zhǎng)值相關(guān)的常數(shù),Wi是擴(kuò)展的第i塊,其中(0=

Q-1…Q-4是通過(guò)鏈值確定的壓縮的MD5算法。因此:

鏈值的初步建立,在大端字節(jié):


計(jì)算完64個(gè)步驟以后,MD5c的計(jì)算結(jié)果如下:

在實(shí)際生活中,明文碼長(zhǎng)一般比較長(zhǎng),在進(jìn)行加密時(shí)比較繁瑣,占用的空間也比較大,而且明文出現(xiàn)的過(guò)程中可能會(huì)出現(xiàn)密文的攻擊者,編碼較長(zhǎng)的明文更容易被攻擊,因此本文通過(guò)對(duì)數(shù)據(jù)進(jìn)行哈夫曼編碼能解決此問(wèn)題。而使用MD5散列算法,因?yàn)榧用芎徒饷芩惴ㄊ遣粚?duì)稱(chēng)的,通過(guò)改進(jìn)后,也對(duì)數(shù)據(jù)的加密提供了一定的保障。因此,基于哈夫曼樹(shù)的壓縮加密技術(shù)為計(jì)算機(jī)的網(wǎng)絡(luò)安全提供了一定的保障。
[1] 王曉東.計(jì)算機(jī)算法分析與設(shè)計(jì)[M].第4版.北京:電子工業(yè)出版社:2012:96-100.
[2] 謝希仁.計(jì)算機(jī)網(wǎng)絡(luò)[M].第6版.北京:電子工業(yè)出版社:2013.
[3] 奠愛(ài)民.主流VPN技術(shù)的安全性研究與改進(jìn)[D].南京:南京理工大學(xué).2009.
[4] 韓相軍,郭春英.淺談哈夫曼樹(shù)及其應(yīng)用[J].濮陽(yáng)教育學(xué)院學(xué)報(bào),2001,14(3):45-45.
[5] 石博文,苑海潮,路慧澤,等.基于二叉樹(shù)和一維數(shù)組的哈夫曼編碼[J].通信技術(shù),2017,50(5):867-872.
[6] 謝娜.哈夫曼樹(shù)算法的改進(jìn)[J].電腦知識(shí)與技術(shù),2010(29):8224-8226.
[7] 毛熠,陳娜.MD5算法的研究與改進(jìn)[J].計(jì)算機(jī)工程,2012,38(4):111-114.
[8] 陸琳琳.MD5算法的技術(shù)研究及性能優(yōu)化[D].長(zhǎng)春:吉林大學(xué),2009.
[9] 張裔智,趙毅,湯小斌.MD5算法研究[J].計(jì)算機(jī)科學(xué),2008,35(7):295-297.
[10] 趙素萍.MD5加密算法的改進(jìn)及應(yīng)用[J].現(xiàn)代計(jì)算機(jī),2017(15):60-62.