MD5理解和基礎應用場景

2021-08-09 13:24:52 字數 1838 閱讀 4052

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

白話白話:md5,其實就是一中演算法。可以將乙個字串,或檔案,或壓縮包,執行md5後,就可以生成乙個固定長度為128bit的串。這個串,基本上是唯一的。把乙個任意長度的位元組串變換成⼀定⻓度的⼗六進製制數字串。

目的是讓⼤容量資訊在⽤數字簽名軟體簽署私⼈金鑰前被」壓縮」成⼀種保密的格式。

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

2、數字證書:

對一段message(位元組串)產生fingerprint(指紋),以防止被」篡改」。舉個例子,你將一段話寫在乙個叫readme.txt檔案中,並對這個readme.txt產生乙個md5的值並記錄在案,然後你可以傳播這個檔案給別人別人如果修改了檔案中的任何內容,你對這個檔案重新計算md5時就會發現。如果再有乙個第三方的認證機構,用md5還可以防止檔案作者的」抵賴」,這 就是所謂的數字簽名應用。

3、安全訪問認證:

用於作業系統的登陸認證上。當使用者登入的時候,系統把⽤戶輸入的密碼進⾏md5 hash運算,然後再去和儲存在檔案系統中的md5值進⾏比較, 進⽽確定輸⼊的密碼是否正確。

通過這樣的步驟,系統在並不知道使用者密碼的明碼的情況下就可以確定使用者登入系統的合法性。這可以避免⽤戶的密碼被具有系統管理員許可權的使用者知道。指紋解鎖一樣可以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值……

16位 小寫 ac59075b964b0715

32位 小寫 202cb962ac59075b964b07152d234b70

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

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

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

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

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

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

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

如果要求不高,比如儲存個密碼啥的,問題不大。為了防止破解,加個 salt 最好。

resultstr = [[nsstring stringwithformat:@"%@",@"加鹽"] md5hash];

md5論壇討論,更容易理解

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

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

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

- (nsstring *)md5hash
參考這位大神,非常感謝,記錄理解

2 請求安全 MD5的必要性以及實際應用場景

md5為計算機安全領域廣泛使用的一種雜湊函式,用以提供訊息的完整性保護。用於確保資訊傳輸完整一致。是計算機廣泛使用的雜湊演算法之一 又譯摘要演算法 雜湊演算法 主流程式語言普遍已有md5實現。將資料 如漢字 運算為另一固定長度值,是雜湊演算法的基礎原理,md5的前身有md2 md3和md4。ps 寫...

MD5演算法的應用

md5演算法的應用 對資訊產生摘要 md5 tanajiya.tar.gz 0ca175b9c0f726a831d895e269332461 這就是tanajiya.tar.gz檔案的數字簽名。md5將整個檔案當作乙個大文字資訊,通過其不可逆的字串變換演算法,產生了這個唯一的md5資訊摘要。為了讓讀...

MD5的自己的理解

什麼是md5演算法呢?我理解的是,md5演算法將任意長度的資料 最終都會轉化為字串 轉換成乙個固定大小 32位或者是16位 的加密資料。而且這些加密後的資料是不可逆的,也就是說,你拿到加密後的資料後,想通過逆運算來獲取原來的資料是不可能的。那怎麼辦呢,只有通過拿到和原來一樣的資料將他也轉化為md5碼...