?

淺析MD5算法的原理

2016-10-14 04:12武佳杰
科學與財富 2016年28期
關鍵詞:加密信息安全

摘 要:隨著網絡技術的廣泛應用,網絡信息安全越來越引起人們的重視。目前通常將需要存儲的數據進行加密然后再存儲,MD5(Message-Digest algorithm 5)算法是一個不錯的選擇。MD5算法是一種用于產生數字簽名的單項散列算法。它的作用是讓大容量信息在用數字簽名軟件簽署私人密鑰前被“壓縮”成一種保密的格式。

關鍵詞:信息安全;MD5;加密;封裝

1引言

隨著網絡通信技術和Internet的聯系日益增強,出現了一系列與網絡安全相關的問題:如對主機的攻擊,網絡上傳輸的信息被截取、篡改、重發等,由此,它對網絡應用的進一步推廣構成了巨大威脅,因此密碼體制[1]就在這種背景下應運而生了。存儲加密涉及大量文件、資料、新建等文檔處理,需要高效,可靠的進行各種信息交換,同時對信息流轉的整個過程需要有效的組織和監控。數據加密技術不僅具有保證信息機密性的信息加密功能,而且具有數字簽名、秘密分存、系統安全等性能。因而可以保障信息的機密性、完整性和準確性,防止信息被篡改、偽造和假冒[2]。雖然目前已有很多加密技術應用于各個領域,但是存在加密強度、運算量大等缺陷,因而本文提出了一種新的加密機制—MD5加密。

2理論基礎

2.1單向散列函數

單向散列函數[4]也稱Hash(哈希)函數。它是現代密碼學的核心。散列函數一直在計算機科學中使用,散列函數就是把可變的輸入長度串轉換成固定長度輸出值(叫做散列值)的一種函數。而單向散列函數是在一個方向上工作的散列函數,從預映射的值很容易計算出它的散列值,但要使它的散列值等于一個特殊值卻很難。散列值越長則安全性越好,MD5算法就是單向散列函數產生128位的散列值,以下即為生成一個長散列值的方法:

1)運用單向散列函數生成一則消息的散列值。

2)將該散列值附于消息之后。

3)產生包含散列值和消息在內的一連串的數值的散列值。

4)將(1)產生的散列值與(3)產生的散列值組合起來生成一個更大的散列值。

5)重復1)至3)步若干次。

2.2MD5算法的基本原理

MD5算法以512位分組來處理輸入文本,每一分組又劃分為16個32位子分組。算法的輸出由4個32位分組組成,將它們級聯形成一個128位散列值[5]。

第1步:MD5在原消息中增加填充位,目的是使原消息長度等于一個值,即比512的倍數少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位的數字,這些鏈接變量的初始十六進制值如表1所示,低的字節在前面。

第5步:處理塊。這是個循環,對消息中的多個512位塊運行。

第5.1步:將四個鏈接變量復制到四個變量a,b,c,d中,使a=A,b=B,c=C,d=D。

這個算法將a,b,c,d組合成128位寄存器(abcd),寄存器(abcd)在實際算法運算中保存中間結果和最終結果,如圖1所示。

第5.2步:將當前512位塊分解為16個子塊,每個子塊為32位,如圖2所示。

第5.3步:主循環有四輪,每一輪的操作都要處理一個塊中的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是個常量數組,包含64個元素,每個元素為32位。我們把數組t的元素表示為t[1],t[2],…,t[64],或t[i],其中i為1~64。由于有四輪,因此每一輪用64個t值中的16個。每一輪輸出的中間和最終結果復制到寄存器abcd中:

1)首先對b, c, d作一次非線性函數運算,這個運算在四輪中不同。

2)變量a加進第1步的輸出(即寄存器abcd)。

3)消息子塊M[i]加進第2步的輸出(即寄存器abcd)。

4)常量t[i]加進第3步輸出(即寄存器abcd)。

5)第4步的輸出(即寄存器abcd)循環左移s位。

6)變量b加進第5步輸出(即寄存器abcd)。

7)第6步的輸出成為下一步的新abcd。

圖3和圖4顯示了MD5操作過程。

對于每次操作中用到的四個線性函數,即

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)),其中,&是與,|是或,~是非,^是異或。這些函數中,如果x,y和z的對應位是獨立和均勻的,那么結果的每一位也是獨立和均勻的,函數F是按逐位方式操作;函數H是逐位奇偶操作。

3.結論

MD5是單向加密算法,加密以后信息不可以解密??梢詫λ惴ㄗ鲞m當的修改和補充,以更加適合應用需要。同時隨著企業信息和數據的巨大膨脹,以及確保數據安全的重要性與日俱增,數據的加密有著不可替代的重要性,但隨之而來的問題是效率的降低和數據管理的復雜。高效率、易管理的數據安全方案將是未來的研究方向。

參考文獻

[1]楊義先,林曉東.信息安全綜論[M].北京:電信科學出版社, 1998 .

[2]楊明,齊望東.密碼編碼學與網絡安全[M].北京:電子工業出版社,1997.

[3]彭文波.MD5算法原理及應用[EB/OL].中國知網 1999.2.

[4]桑海,李建寶.加密算法MD5 的研究與應用[EB/OL]. 華南金融電腦 1999.7.

[5]潘清芳.使用MD5加密數據庫系統的設計[J].第3 卷第2 期:77-143.

[6]鄭莉,董淵.C++語言程序設計[M].北京:清華大學出版社,2001.

[7]施衛鋒, 周俊, 朱利剛.多戶住處系統中數據安全性控制及其實現[EB/OL].微機發展.

[8] 段鋼著.加密與解密(第二版)[M].北京:電子工業出版社,2003.

作者簡介:武佳杰(1989—),男,山西汾陽人,山西財經大學2014(計算機應用技術)學術碩士研究生,研究方向:貝葉斯網絡。

猜你喜歡
加密信息安全
《信息安全與通信保密》征稿函
信息安全專業人才培養探索與實踐
保護信息安全要滴水不漏
高校信息安全防護
加密與解密
一種基于LWE的同態加密方案
保護個人信息安全刻不容緩
認證加密的研究進展
基于ECC加密的電子商務系統
基于格的公鑰加密與證書基加密
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合