摘 要:隨著網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,網(wǎng)絡(luò)信息安全越來越引起人們的重視。目前通常將需要存儲的數(shù)據(jù)進行加密然后再存儲,MD5(Message-Digest algorithm 5)算法是一個不錯的選擇。MD5算法是一種用于產(chǎn)生數(shù)字簽名的單項散列算法。它的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式。
關(guān)鍵詞:信息安全;MD5;加密;封裝
1引言
隨著網(wǎng)絡(luò)通信技術(shù)和Internet的聯(lián)系日益增強,出現(xiàn)了一系列與網(wǎng)絡(luò)安全相關(guān)的問題:如對主機的攻擊,網(wǎng)絡(luò)上傳輸?shù)男畔⒈唤厝?、篡改、重發(fā)等,由此,它對網(wǎng)絡(luò)應(yīng)用的進一步推廣構(gòu)成了巨大威脅,因此密碼體制[1]就在這種背景下應(yīng)運而生了。存儲加密涉及大量文件、資料、新建等文檔處理,需要高效,可靠的進行各種信息交換,同時對信息流轉(zhuǎn)的整個過程需要有效的組織和監(jiān)控。數(shù)據(jù)加密技術(shù)不僅具有保證信息機密性的信息加密功能,而且具有數(shù)字簽名、秘密分存、系統(tǒng)安全等性能。因而可以保障信息的機密性、完整性和準確性,防止信息被篡改、偽造和假冒[2]。雖然目前已有很多加密技術(shù)應(yīng)用于各個領(lǐng)域,但是存在加密強度、運算量大等缺陷,因而本文提出了一種新的加密機制—MD5加密。
2理論基礎(chǔ)
2.1單向散列函數(shù)
單向散列函數(shù)[4]也稱Hash(哈希)函數(shù)。它是現(xiàn)代密碼學的核心。散列函數(shù)一直在計算機科學中使用,散列函數(shù)就是把可變的輸入長度串轉(zhuǎn)換成固定長度輸出值(叫做散列值)的一種函數(shù)。而單向散列函數(shù)是在一個方向上工作的散列函數(shù),從預(yù)映射的值很容易計算出它的散列值,但要使它的散列值等于一個特殊值卻很難。散列值越長則安全性越好,MD5算法就是單向散列函數(shù)產(chǎn)生128位的散列值,以下即為生成一個長散列值的方法:
1)運用單向散列函數(shù)生成一則消息的散列值。
2)將該散列值附于消息之后。
3)產(chǎn)生包含散列值和消息在內(nèi)的一連串的數(shù)值的散列值。
4)將(1)產(chǎn)生的散列值與(3)產(chǎn)生的散列值組合起來生成一個更大的散列值。
5)重復(fù)1)至3)步若干次。
2.2MD5算法的基本原理
MD5算法以512位分組來處理輸入文本,每一分組又劃分為16個32位子分組。算法的輸出由4個32位分組組成,將它們級聯(lián)形成一個128位散列值[5]。
第1步:MD5在原消息中增加填充位,目的是使原消息長度等于一個值,即比512的倍數(shù)少64位。填充后,原消息的長度為448位(比512少64),960位(比1024少64位),1472位(比1536少64位)等。
第2步:增加填充位后,就要計算機消息原長,將其加進填充后的消息末尾。先計算消息長度,不包括填充位(即增加填充位前的長度)。這個消息原長表示為64位值,添加到加進填充后的消息末尾。如果消息長度超過264位(即64位無法表示,因為消息太長),則只用長度的低64位,即等于計算length mod 264。
第3步:將輸入分成512位的塊。
第4步:初始化四個鏈接變量,分別稱為A,B,C,D,它們都是32位的數(shù)字,這些鏈接變量的初始十六進制值如表1所示,低的字節(jié)在前面。
第5步:處理塊。這是個循環(huán),對消息中的多個512位塊運行。
第5.1步:將四個鏈接變量復(fù)制到四個變量a,b,c,d中,使a=A,b=B,c=C,d=D。
這個算法將a,b,c,d組合成128位寄存器(abcd),寄存器(abcd)在實際算法運算中保存中間結(jié)果和最終結(jié)果,如圖1所示。
第5.2步:將當前512位塊分解為16個子塊,每個子塊為32位,如圖2所示。
第5.3步:主循環(huán)有四輪,每一輪的操作都要處理一個塊中的16個子塊。每一輪的輸入如下:(a) 16個子塊;(b)變量a,b,c,d;(c)常量t。
這四輪中的第1步進行不同處理,其他步驟是相同的。每一輪有16個輸入子塊M[0],M[1],…,M[15],或表示為M[i],其中i為1~15。每個子塊為32位。t是個常量數(shù)組,包含64個元素,每個元素為32位。我們把數(shù)組t的元素表示為t[1],t[2],…,t[64],或t[i],其中i為1~64。由于有四輪,因此每一輪用64個t值中的16個。每一輪輸出的中間和最終結(jié)果復(fù)制到寄存器abcd中:
1)首先對b, c, d作一次非線性函數(shù)運算,這個運算在四輪中不同。
2)變量a加進第1步的輸出(即寄存器abcd)。
3)消息子塊M[i]加進第2步的輸出(即寄存器abcd)。
4)常量t[i]加進第3步輸出(即寄存器abcd)。
5)第4步的輸出(即寄存器abcd)循環(huán)左移s位。
6)變量b加進第5步輸出(即寄存器abcd)。
7)第6步的輸出成為下一步的新abcd。
圖3和圖4顯示了MD5操作過程。
對于每次操作中用到的四個線性函數(shù),即
F(x,y,z) = (x&y)|((~x)&z) G(x,y,z) = (x&z)|(y&(~z)) H(x,y,z) = x^y^z
I(x,y,z) = y^(x|(~z)),其中,&是與,|是或,~是非,^是異或。這些函數(shù)中,如果x,y和z的對應(yīng)位是獨立和均勻的,那么結(jié)果的每一位也是獨立和均勻的,函數(shù)F是按逐位方式操作;函數(shù)H是逐位奇偶操作。
3.結(jié)論
MD5是單向加密算法,加密以后信息不可以解密。可以對算法做適當?shù)男薷暮脱a充,以更加適合應(yīng)用需要。同時隨著企業(yè)信息和數(shù)據(jù)的巨大膨脹,以及確保數(shù)據(jù)安全的重要性與日俱增,數(shù)據(jù)的加密有著不可替代的重要性,但隨之而來的問題是效率的降低和數(shù)據(jù)管理的復(fù)雜。高效率、易管理的數(shù)據(jù)安全方案將是未來的研究方向。
參考文獻
[1]楊義先,林曉東.信息安全綜論[M].北京:電信科學出版社, 1998 .
[2]楊明,齊望東.密碼編碼學與網(wǎng)絡(luò)安全[M].北京:電子工業(yè)出版社,1997.
[3]彭文波.MD5算法原理及應(yīng)用[EB/OL].中國知網(wǎng) 1999.2.
[4]桑海,李建寶.加密算法MD5 的研究與應(yīng)用[EB/OL]. 華南金融電腦 1999.7.
[5]潘清芳.使用MD5加密數(shù)據(jù)庫系統(tǒng)的設(shè)計[J].第3 卷第2 期:77-143.
[6]鄭莉,董淵.C++語言程序設(shè)計[M].北京:清華大學出版社,2001.
[7]施衛(wèi)鋒, 周俊, 朱利剛.多戶住處系統(tǒng)中數(shù)據(jù)安全性控制及其實現(xiàn)[EB/OL].微機發(fā)展.
[8] 段鋼著.加密與解密(第二版)[M].北京:電子工業(yè)出版社,2003.
作者簡介:武佳杰(1989—),男,山西汾陽人,山西財經(jīng)大學2014(計算機應(yīng)用技術(shù))學術(shù)碩士研究生,研究方向:貝葉斯網(wǎng)絡(luò)。