廣域網(wǎng)的應(yīng)用現(xiàn)已滲透到生活的方方面面。關(guān)于廣域網(wǎng)加速技術(shù)也成為研究的熱點(diǎn),其中主流的方法主要可以分為兩大類:數(shù)據(jù)壓縮和傳輸協(xié)議優(yōu)化。
MD5(Message-Digest Algorithm 5)是計(jì)算機(jī)科學(xué)里常用的一種算法,具有壓縮長度固定、抗修改性很好的特點(diǎn),且非常容易計(jì)算。MD5 哈希值就像是人的指紋一樣,每個文件的 MD5 值是獨(dú)一無二的,稍有改動,其 MD5 值就會發(fā)生變化,所以 MD5 算法常用來保護(hù)數(shù)據(jù)消息的完整性。下面介紹一些常見的數(shù)據(jù)壓縮算法,MD5 算法。
MD5 算法的簡要過程如下:MD5 算法以 512 位的分組來處理輸入的信息,然后又將每個 512 位的分組均分成數(shù)個 32 的子分組,再經(jīng)過一系列的數(shù)據(jù)處理流程后,產(chǎn)生 128 位的哈希值即為最終的 MD5 值。
因?yàn)檩斎氲臄?shù)據(jù)位數(shù)可能不滿足條件,所以第一步要對輸入信息進(jìn)行填充,需要在消息的后面填充一個 1 和若干個 0,使得信息的位長滿足 N*512+448(其中 N 為 0 或者正整數(shù))為止;接著再在這個結(jié)果后面添加上一個 64 位的二進(jìn)制數(shù),該數(shù)表示原信息的長度,取低 64 位即可,這樣最后得到的信息位長是 512 的整數(shù)倍;定義四個 16 進(jìn)制參數(shù) A、B、C、D,在程序中的值分別為 A=0x67452301,B=0xEFCDAB89,C=0x98BADCFE,D=0x10325476;以下 4 個函數(shù)是后續(xù)步驟將要用到的,其中的“&”、 “|”、“~”、“^”分別是與、或、非、異或操作符;
(1)F( X ,Y ,Z ) = ( X & Y ) | ( (~X) & Z )
(2)G( X ,Y ,Z ) = ( X & Z ) | ( Y & (~Z) )
(3)H( X ,Y ,Z ) =X ^ Y ^ Z
(4)I( X ,Y ,Z ) =Y ^ ( X | (~Z) )
又假設(shè) Mj 的含義是輸入消息的第 j 個子分組,常數(shù) ti 的值為 2 的 32 次方乘以 abs( sin(i) )的整數(shù)部分,i 可以取 1 到 64 的任意整數(shù),“<<”表示循環(huán)左移,定義如下表達(dá)式:
(1)FF(a ,b ,c ,d ,Mj ,s ,ti ) 操作為 a = b + ( (a + F(b,c,d) + Mj + ti) << s)
(2)GG(a ,b ,c ,d ,Mj ,s ,ti ) 操作為 a = b + ( (a + G(b,c,d) + Mj + ti) << s)
(3)HH(a ,b ,c ,d ,Mj ,s ,ti) 操作為 a = b + ( (a + H(b,c,d) + Mj + ti) << s)
(4)II(a ,b ,c ,d ,Mj ,s ,ti) 操作為 a = b + ( (a + I(b,c,d) + Mj + ti) << s)
接著一共進(jìn)行四輪操作,每輪進(jìn)行 16 次函數(shù)運(yùn)算,將每次得到的結(jié)果左隨機(jī)的位數(shù),并將結(jié)果與前面未用到的分組相加,并賦值給 a,b,c,d,將最后一輪計(jì)算結(jié)果再加上 A,B,C,D 并級聯(lián)就得到了輸入信息的 MD5 指紋值了。
田鑫,專業(yè)的企業(yè)組網(wǎng)服務(wù)商,致力于為企業(yè)提供企業(yè)組網(wǎng)(SD-WAN、MPLS、云互聯(lián)),業(yè)務(wù)云化、數(shù)據(jù)中心、網(wǎng)絡(luò)安全、行業(yè)IT解決方案等相關(guān)服務(wù)。
更多相關(guān)內(nèi)容推薦:
廣域網(wǎng)加速,數(shù)據(jù)壓縮技術(shù)的發(fā)展現(xiàn)狀應(yīng)用于網(wǎng)絡(luò)路由之上的廣域網(wǎng)數(shù)據(jù)壓縮軟件
廣域網(wǎng)加速技術(shù):數(shù)據(jù)壓縮和傳輸協(xié)議優(yōu)化