MD5加密演算法

2021-09-17 21:57:11 字數 1023 閱讀 9332

md5訊息摘要演算法(message-digest algorithm)。它對輸入的任意長度的訊息進行運算,產生乙個128位的訊息摘要。

演算法原理

資料填充

填充訊息使其長度與448模512同餘(長度=448 mod 512),即時訊息長度本身已經滿足了上述長度要求也需要填充。

填充方法:附乙個1在訊息後面,然後用0填充,直至符合長度要求(長度=448 mod 512)。

新增長度

在上一步結果之後新增64位的訊息長度。如果訊息長度大於264,則只使用其低64位。最終訊息長度正好是512的整數倍。

初始化變數

用4個變數(a、b、c、d)計算訊息摘要。a、b、c、d都是32位暫存器。這些暫存器以下面的16進製制數來初始化:

a=01234567h ,b=89abcdefh , c=fedcba98h , d=76543210h

資料處理

以512位分組為單位,進行處理訊息。首先定義4個輔助函式,每個都是以3個32位雙字作為輸入,輸出1個32位雙字。

4個函式:

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));

"&「是與操作,」|「是或操作,」~「是非操作,」^"是異或操作。

這4輪變換是對進入主迴圈的512位訊息分組的16個32位字分別進行如下操作:將a、b、c、d的副本a、b、c、d中的3個經f、g、h、i運算後的結果與第4個相加,再加上32位字和乙個32位字的加法常數,並將所得之值迴圈左移若干位,最後將所得結果加上a、b、c、d之一,並回送至abcd,由此完成一次迴圈。

所用的加法常數由這樣一張表t[i]來定義,其中i為1…64,t[i]等於4294967296乘以abs(sin(i))的整數部分,這樣做是為了通過正弦函式和冪函式來進一步消除變換中的線性。

512位分組運算完畢後,a、b、c、d的級聯被輸出為md5雜湊的結果。

md5加密演算法

md5.h ifndef md5h define md5h include include void rol unsigned int s,unsigned short cx 32位數迴圈左移實現函式 void ltob unsigned int i b l互轉,接受uint型別 unsigned ...

加密演算法 MD5

一 簡介 md5的全稱是message digest algorithm 5 資訊摘要演算法 在90年代初由mit laboratory for computer science和rsa data security inc的ronald l.rivest開發出來,經md2 md3和md4發展而來。訊...

MD5加密演算法

全稱 message digest algorithm 5 翻譯過來就是 資訊 摘要 演算法 5 md5訊息摘要演算法,屬hash演算法一類。md5演算法對輸入任意長度的訊息進行執行,產生乙個128位的訊息摘要。以下所描述的訊息長度 填充資料都以位 bit 為單位,位元組序為小端位元組。1.特點 1...