java中的MD5加密

2021-08-03 16:33:39 字數 1565 閱讀 5195

message-digest algorithm 5(資訊-摘要演算法)。經常說的「md5加密」,就是它→資訊-摘要演算法。

白話白話:md5,其實就是一中演算法。可以將乙個字串,或檔案,或壓縮包,執行md5後,就可以生成乙個固定長度為128bit的串。這個串,基本上是唯一的。

所以,有人修過壓縮包後,就會生成新的串,這時就可以拿**提供的串和新生成的串對比,如果不同,那就是被人修過過了。

加密後的訊息是完整的;具有解密演算法,得到原始資料;

摘要得到的訊息是不完整的;通過摘要的資料,不能得到原始資料;

所以,當看到很多人說,md5,加密,解密的時候,呵呵一笑就好了。

有人說md5,128位,32位,16位,到底md5多長?

md5的長度,預設為128bit,也就是128個0和1的二進位制串。

這樣表達是很不友好的。

所以將二進位制轉成了16進製制,每4個bit表示乙個16進製制,

所以128/4 = 32 換成16進製表示後,為32位了。

網上有很多帖子,md5 32位 16位 加密 區別。

仔細觀察admin生成的32位和16位的md5值……

查詢結果:

md5(admin,32) = 21232f297a57a5a743894a0e4a801fc3

md5(admin,16) = 7a57a5a743894a0e

看出來了吧!

其實16位的長度,是從32位md5值來的。是將32位md5去掉前八位,去掉後八位得到的。

①一致性檢驗,最上面那個例子

②數字簽名,還是最上面那個例子。只是把md5看出了乙個指紋,按了個手印說明獨一無二了。

③安全訪問認證,這個就是平時系統設計的問題了。

在使用者註冊時,會將密碼進行md5加密,存到資料庫中。這樣可以防止那些可以看到資料庫資料的人,惡意操作了。

md5是不可逆的,也就是沒有對應的演算法,從生產的md5值逆向得到原始資料。

但是如果使用暴力破解,那就另說了。

md5作為資料庫中的主鍵可行嗎?這就涉及到乙個問題,md5值是唯一的嗎?答案是,不唯一。

也就是乙個原始資料,只對應乙個md5值;

但是乙個md5值,可能對應多個原始資料。

public class md5test 

/*** 生成md5

* @param message

* @return

*/public static string ge***5(string message) catch (exception e)

return md5str;

}/**

* 二進位制轉十六進製制

* @param bytes

* @return

*/public static string bytestohex(byte bytes)

if(digital < 16)

}return md5str.tostring().touppercase();}}

Md5加密Java實現

實現方法有 1.對已經進行過md5加密的資料再次進行md5加密。2.對原有資料加一串其他字元來使其變得複雜也可以做到不能被解碼。所加字串一般是已經協商好的 1 壓縮性 任意長度的資料,算出的md5值長度都是固定的。2 容易計算 從原資料計算出md5值很容易。3 不可逆 對原資料進行任何改動,哪怕只修...

java實現md5加密

一 加鹽方式public static string ge 5 string content throws nosuchalgorithmexception 標準的md5加密結果 return buffer.tostring 二 普通方式public static string ge 5byordi...

Java實現MD5加密

呼叫 string password new string qweqwe password stringmd5 password md5加密 param input return public static string stringmd5 string input catch nosuchalgo...