導航:首頁 > 源碼編譯 > md5演算法規律

md5演算法規律

發布時間:2022-11-26 18:49:35

❶ MD5演算法原理實現以及常用方法匯總

哈希演算法又稱散列演算法,是將任何數據轉換成固定長度的演算法的統稱。 從本質上講,MD5也是一種哈希演算法,其輸出是生成128位的輸出結果。 如果輸入兩個不同的明文,就會輸出兩個不同的輸出值,並且根據輸出值,不能得到原始的明文,這個過程是不可逆的。

MD5演算法對512位報文的輸入信息進行處理,每個報文被分成16個32位報文。 經過一系列處理後,演算法的輸出由4個32位的數據包組成,這些數據包能聯生成一個128位的哈希值。

在MD5演算法中,信息的填寫方式是這樣的:消息後面跟著一個1,然後是無數個0,直到512位元組的剩餘數等於448 (n*512) + 448。 為什麼剩下的是448,因為剩下的512-448是64位,表示填充前的消息長度。 加上剩下的64位,(n+1)乘以512,也就是512的整數倍。

然後循環通過link變數獲得結果。 MD5包含四個32位整數參數,稱為鏈接變數:A=0x01234567, B= 0x89ABCdef, C= 0xFeDCba98, D=0x76543210。 一旦設置好四個鏈接變數,演算法就開始了四輪循環。 具體的內部計算是關於數學的。如果你感興趣,你可以自己理解。這里沒有更多的解釋。

❷ MD5演算法是怎麼算的

一個比較復雜的數學運算

Rivest在1989年開發出MD2演算法。在這個演算法中,首先對信息進行數據補位,使信息的位元組長度是16的倍數。然後,以一個16位的檢驗和追加到信息末尾。並且根據這個新產生的信息計算出散列值。後來,Rogier和Chauvaud發現如果忽略了檢驗將和MD2產生沖突。MD2演算法加密後結果是唯一的-----即沒有重復。

MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。

有興趣的話,看下這個 http://ke..com/view/7636.htm

❸ md5是什麼東西啊

md5指的是MD5信息摘要演算法。

MD5信息摘要演算法是一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。

MD5的演算法:

在MD5演算法中,首先需要對信息進行填充,這個數據按位(bit)補充,要求最終的位數對512求模的結果為448。也就是說數據補位後,其位數長度只差64位(bit)就是512的整數倍。即便是這個數據的位數對512求模的結果正好是448也必須進行補位。

補位的實現過程:首先在數據後補一個1bit; 接著在後面補上一堆0bit, 直到整個數據的位數對512求模的結果正好為448。總之,至少補1位,而最多可能補512位。

❹ md5是什麼 如何計算MD5

MD5即Message-Digest Algorithm 5(信息-摘要演算法5),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD5實現。

MD5演算法具有以下特點:

1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。

2、容易計算:從原數據計算出MD5值很容易。

3、抗修改性:對原數據進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。

4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。

MD5的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的16進制數字串)。

大家都知道,地球上任何人都有自己獨一無二的指紋,這常常成為司法機關鑒別罪犯身份最值得信賴的方法;與之類似,MD5就可以為任何文件(不管其大小、格式、數量)產生一個同樣獨一無二的MD5「數字指紋」,如果任何人對文件做了任何改動,其MD5也就是對應的「數字指紋」都會發生變化。

❺ Md5演算法具體是的思想

【MD5演算法小結】

1、md5中有四個32位被稱作鏈接變數(chaining variable)的整數參數,他們分別為:a=0x01234567,b=0x89abcdef,c=0xfedcba98,d=0x76543210。
2、用用戶名對信息進行填充,其大小為(在這個MD5CrackMe中,從數組c1的c1[8]到c1[23]共16個32位)512位元組,用戶名依次從c1[8]開始的單元按位元組填充,結束後用結束標志0x80填充到用戶名最後一個字元後面,其於位元組全部為0,然後用用戶名的位數乘以8的十六進制數填充到c1[22]的單元。
3、當設置好這四個鏈接變數後,就開始進入演算法的四輪循環運算。循環的次數是信息中512位信息分組的數目,最後得到4個MD5值。

❻ MD5演算法原理及實現

散列函數,也稱作哈希函數,消息摘要函數,單向函數或者雜湊函數。散列函數主要用於驗證數據的完整性。通過散列函數,可以創建消息的「數字指紋」,消息接收方可以通過校驗消息的哈希值來驗證消息的完整性,防止消息被篡改。散列函數具有以下特性:

任何消息經過散列函數處理後,都會產生一個唯一的散列值,這個散列值可以用來驗證消息的完整性。計算消息散列值的過程被稱為「消息摘要」,計算消息散列值的演算法被稱為消息摘要演算法。常使用的消息摘要演算法有:MD—消息摘要演算法,SHA—安全散列演算法,MAC—消息認證碼演算法。本文主要來了解MD演算法。

MD5演算法是典型的消息摘要演算法,它是由MD4,MD3和MD2演算法演變而來。無論是哪一種MD演算法,其原理都是接受一個任意長度的消息並產生一個128位的消息摘要。如果把得到的消息摘要轉換成十六進制字元串,則會得到一個32位元組長度的字元串,我們平常見到的大部分MD數字指紋就是一個長度為32的十六進制字元串。

假設原始消息長度是b(以bit為單位),注意這里b可以是任意長度,並不一定要是8的整數倍。計算該消息MD5值的過程如下:

在計算消息的MD5值之前,首先對原始信息進行填充,這里的信息填充分為兩步。
第一步,對原始信息進行填充,填充之後,要求信息的長度對512取余等於448。填充的規則如下:假設原始信息長度為b bit,那麼在信息的b+1 bit位填充1,剩餘的位填充0,直到信息長度對512取余為448。這里有一點需要注意,如果原始信息長度對512取余正好等於448,這種情況仍然要進行填充,很明顯,在這時我們要填充的信息長度是512位,直到信息長度對512取余再次等於448。所以,填充的位數最少為1,最大為512。
第二步,填充信息長度,我們需要把原始信息長度轉換成以bit為單位,然後在第一步操作的結果後面填充64bit的數據表示原始信息長度。第一步對原始信息進行填充之後,信息長度對512取余結果為448,這里再填充64bit的長度信息,整個信息恰好可以被512整除。其實從後續過程可以看到,計算MD5時,是將信息分為若干個分組進行處理的,每個信息分組的長度是512bit。

在進行MD5值計算之前,我們先來做一些定義。

下面就是最核心的信息處理過程,計算MD5的過程實際上就是輪流處理每個信息分組的過程。

MD5演算法實現如下所示。

這里也和Java提供的標准MD5演算法進行了對比,通過測試可以看到該MD5計算的結果和Java標准MD5演算法的計算結果是一樣的。

❼ md5是什麼東西

MD5(信息摘要演算法)是一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。

MD5由美國密碼學家羅納德·李維斯特(Ronald Linn Rivest)設計,於1992年公開,用以取代MD4演算法。這套演算法的程序在RFC 1321標准中被加以規范。

1996年後該演算法被證實存在弱點,可以被加以破解,對於需要高度安全性的數據,專家一般建議改用其他演算法,如SHA-2。2004年,證實MD5演算法無法防止碰撞(collision),因此不適用於安全性認證,如SSL公開密鑰認證或是數字簽名等用途。

MD5的原理:

MD5演算法的原理可簡要的敘述為:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。

以上內容參考:網路-MD5

❽ md5演算法是什麼

MD5的全稱是Message-Digest Algorithm 5,在90年代初由MIT的計算機科學實驗室和RSA Data Security Inc發明,經MD2、MD3和MD4發展而來。
Message-Digest泛指位元組串(Message)的Hash變換,就是把一個任意長度的位元組串變換成一定長的大整數。請注意我使用了「位元組串」而不是「字元串」這個詞,是因為這種變換只與位元組的值有關,與字元集或編碼方式無關。
MD5將任意長度的「位元組串」變換成一個128bit的大整數,並且它是一個不可逆的字元串變換演算法,換句話說就是,即使你看到源程序和演算法描述,也無法將一個MD5的值變換回原始的字元串,從數學原理上說,是因為原始的字元串有無窮多個,這有點象不存在反函數的數學函數。
MD5的典型應用是對一段Message(位元組串)產生fingerprint(指紋),以防止被「篡改」。舉個例子,你將一段話寫在一個叫 readme.txt文件中,並對這個readme.txt產生一個MD5的值並記錄在案,然後你可以傳播這個文件給別人,別人如果修改了文件中的任何內容,你對這個文件重新計算MD5時就會發現(兩個MD5值不相同)。如果再有一個第三方的認證機構,用MD5還可以防止文件作者的「抵賴」,這就是所謂的數字簽名應用。
MD5還廣泛用於加密和解密技術上,在很多操作系統中,用戶的密碼是以MD5值(或類似的其它演算法)的方式保存的, 用戶Login的時候,系統是把用戶輸入的密碼計算成MD5值,然後再去和系統中保存的MD5值進行比較,而系統並不「知道」用戶的密碼是什麼。

❾ MD5的演算法原理

MD5簡介:
MD5是Message-digestAlgorithm5(信息-摘要演算法)的縮寫,經MD2、MD3和MD4發展而來。它是把一個任意長度的位元組串變換成一定長的大整數。MD5演算法是在MD4的基礎上增加了「安全-帶子」(safety-belts)的概念。雖然MD5比MD4稍微慢一些,但卻更為安全。這個演算法很明顯的由四個和MD4設計有少許不同的步驟組成。在MD5演算法中,信息摘要的大小和填充的必要條件與MD4完全相同。由於MD5演算法的使用不需要支付任何版權費用,所以在一般的情況下MD5不失為一種非常優秀的中間技術。
MD5原理:
MD 5演算法是對輸入信息進行初始化處理後,以512位分組來處理輸入的信息,每一分組又被劃分
成為16個32位子分組,經過了一系列的變換處理後,輸出由四個32位分組,再將這四個32位分組級
聯後生成一個128位散列值[5- 6]。具體過程如下:
(1)首先對信息進行填充,即在信息的後面填充一個1和若干個0使其位元組長度對512求余的結
果等於448。
(2)對MD 5進行初始化,即MD 5中用四個32位被稱作鏈接變數的整數參數,它們分別為:A =
0x01234567,B = 0x89abcdef,C = 0xfedcba98,D =0x76543210。
(3)開始進入演算法的四輪循環運算。循環的次數是信息中512位信息分組的數目。將上面四個鏈
接變數復制到另外四個變數中:A到a,B到b,C到c,D到d。主循環有四輪,第一輪進行16次操作。
每次操作對a、b、c和d中的其中三個做一次非線性函數運算,然後將所得結果加上第四個變數,再將所得結果向右位移一個不定的數,並加上a、b、c或d中之一。最後用該結果取代a、b、c或d中之一。
以下是每次操作中用到的四個非線性函數(每輪一個)。
f(x,y,z)=(x&y) ((~x)&z)
g(x,y,z)=(xz) (y&(~z))
h(x,y,z)=x y z
i(x,y,z)=y (x (~z))
(其中:「&」是與運算,「 」是或運算,「~」是非運算,「 」是異或運算,它們都是位運算符。)
這四個函數的說明:如果x、y和z的對應位是獨立和均勻的,那麼結果的每一位也應是獨立和均
勻的。f是一個逐位運算的函數。即,如果x,那麼y,否則z。函數h是逐位奇偶操作符。假設mj表示
消息的第j個子分組(從0到15),ti為第I步中的常數,< < <s表示循環左移s位,
則四種操作為:ff(a,b,c,d,mj,s,ti)表示a=b+((a+(f(b,c,d)+mj+ti)< < <s)
gg(a,b,c,d,mj,s,ti)表示a=b+((a+(g(b,c,d)+mj+ti)< < <s)
hh(a,b,c,d,mj,s,ti)表示a=b+((a+(h(b,c,d)+mj+ti)< < <s)
ii(a,b,c,d,mj,s,ti)表示a=b+((a+(i(b,c,d)+mj+ti)< < <s)
常數ti表示在第i步中,ti是4294967296*abs(sin(i))的整數部分,4294967296等於2的32次
方,i的單位是弧度。所有這些完成之後,將A、B、C、D分別加上a、b、c、d。然後用下一分組
數據繼續運行演算法,最後的輸出是A、B、C和D的級聯。

❿ MD5值是什麼

MD5值是一種被廣泛使用的密碼散列函數,可以產生出一個128位(16位元組)的散列值(hash value),用於確保信息傳輸完整一致。

MD5值是它在MD4的基礎上增加了"安全帶"的概念,MD5比MD4復雜度大一些,但卻更為安全。這個演算法很明顯的由四個和MD4設計有少許不同的步驟組成。在MD5演算法中,信息-摘要的大小和填充的必要條件與MD4完全相同。

(10)md5演算法規律擴展閱讀

MD5值原理

MD5演算法的原理可簡要的敘述為:MD5碼以512位分組來處理輸入的信息,且每一分組又被劃分為16個32位子分組,經過了一系列的處理後,演算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。

在MD5演算法中,首先需要對信息進行填充,這個數據按位(bit)補充,要求最終的位數對512求模的結果為448。

也就是說數據補位後,其位數長度只差64位(bit)就是512的整數倍。即便是這個數據的位數對512求模的結果正好是448也必須進行補位。

閱讀全文

與md5演算法規律相關的資料

熱點內容
oraclelinux安裝目錄 瀏覽:133
安卓系統可以安裝編譯器嗎 瀏覽:570
javajson實體類 瀏覽:690
板加密鋼筋是否取代原鋼筋 瀏覽:66
學習編程的思路 瀏覽:230
app易語言post怎麼學 瀏覽:965
地梁的箍筋加密區位置 瀏覽:302
二分法排序程序及編譯結果 瀏覽:679
日語命令形和禁止型 瀏覽:285
安裝軟體用管理員解壓 瀏覽:505
編譯原理代碼塊 瀏覽:400
小孩可以用壓縮面膜嗎 瀏覽:14
錐形倒角怎麼計演算法 瀏覽:882
java合並鏈表 瀏覽:508
pic單片機編譯器 瀏覽:806
麗水四軸加工中心編程 瀏覽:691
國產系統怎麼解壓 瀏覽:553
戰雙程序員 瀏覽:483
him觸摸編程軟體 瀏覽:931
植物大戰僵屍存檔怎麼轉移安卓 瀏覽:852