MD5 加密演算法全解析

2021-07-14 07:17:43 字數 1905 閱讀 7782

全稱:message-digest algorithm 5

翻譯過來就是:資訊 摘要 演算法 5

2.後續講解

3.關於md5加鹽:

比如我的銀行密碼是」12345」

1.得到的md5是:827ccb0eea8a706c4c34a16891f84e7b

2.乙個人擷取到這個密文,那麼通過撞庫肯定容易撞出12345.

3.我們要做的就是加鹽,銀行密碼還是」12345」,然後我把銀行密碼加上我特定的字串才計算md5

所以密碼還是那個密碼,但是變成求」12345密碼加密987」的md5值,然後再得到md5,那麼這個md5起碼可以確認那個資料庫不會有.

說了那麼多我們開始我們的md5工具的製作

我們一般加密都是加密字串或者檔案,所以我們的工具就有加密字串和檔案的兩種方法,兩個方法同名,通過過載完成

邏輯思維:

方法傳入的是檔案物件 : file

以下是詳細**:

public

class

md5tool

/*** 邏輯:

** 1.獲取md5物件,通過"資訊摘要"獲取例項構造("md5").

* 2.md5物件對("字串的"位元組形式"-得到的陣列)進行摘要",那麼會返回乙個"摘要的位元組陣列"

* 3.摘要位元組陣列中的"每個二進位制值"位元組形式,"轉成十六進製制形式",然後再把這些值給拼接起來,就是md5值了

* (ps:為了便於閱讀,把多餘的fff去掉,並且單個字元前加個0)**/

public

static string ge***5(string str) throws exception

md5 += s1;

}return md5;

}//過載,所以使用者傳入"字串"或者"檔案"都可以解決.

/** * 處理邏輯:

* 1.現在傳入的是"檔案",不是字串

* 2.所以資訊摘要物件.進行摘要得到陣列不能像上面獲得:md5.digest(bytes),因為不是str.getbytes得到bytes

* 3.其實還是通過mdt.digest();獲取到位元組陣列,但是前期必須要有乙個方法必須是md5.update(),即"資訊摘要物件"要先更新

* 4."資訊摘要更新"裡面有(byte input),說明是讀取流獲取到的陣列,所以我們就用這個方法.

* 5.所以最終的邏輯就是:

** 1.獲取檔案的讀取流

* 2.不停的讀取流中的"內容"放入字串,放一部分就"更新"一部分.直到全部完畢

* 3.然後呼叫md5.digest();就會得到有內容的位元組陣列,剩下的就和上邊一樣了.

*/public

static string ge***5(file file) throws exception

byte digest = md5.digest();

for (int i = 0; i int n = digest[i] & 0x000000ff;

string s = integer.tohexstring(n);

md5 += s;

}return md5;

}}

拓展

0xfffffff代表的含義:

上面的方法也可以寫寫成:

for (int i = 0; i < digest.length; i++) 

if (s1.length() == 1)

md5 += s1;

}

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 它對輸入的任意長度的訊息進行運算,產生乙個128位的訊息摘要。演算法原理 資料填充 填充訊息使其長度與448模512同餘 長度 448 mod 512 即時訊息長度本身已經滿足了上述長度要求也需要填充。填充方法 附乙個1在訊息後...

加密演算法 MD5

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