MD5介紹

md5介紹

1. md5簡介

md5的全稱是md5信息摘要算法(英文:MD5 Message-Digest Algorithm ),一種被普遍使用的密碼散列函數,能夠產生一個128位(16字節,1字節8位)的散列值(常見的是用32位的16進製表示,好比:0caa3b23b8da53f9e4e041d95dc8fa2c),用於確保信息傳輸的完整一致。php

2. md5原理

md5將整個文件當作一個大文本信息,經過不可逆的字符串變換算法,產生一個惟一的MD5信息摘要。文件的md5相似於人的指紋,在世界上是獨立無二的,若是任何人對文件作了任何改動,其md5的值也就是對應的「數字指紋」都會發生變化。算法

對MD5算法簡要的敘述能夠爲:MD5以512位分組來處理輸入的信息,且每一分組又被劃分爲16個32位子分組,通過了一系列的處理後,算法的輸出由四個32位分組組成,將這四個32位分組級聯後將生成一個128位散列值。 安全

md5與對稱和非對稱加密算法不一樣,這兩種密碼是防止信息被竊取,而摘要算法的目標是用於證實原文的完整性。服務器

3. md5特性

1. 不可逆

沒有系統有辦法知道md5原來的文字是什麼。函數

2. 具備高度的離散性

md5碼具備高度的散列性,沒有規律可循,哪怕原信息只有一點點的變化,好比多個空格,那麼就會致使md5發生巨大變化,也能夠說產生的md5碼是不可預測的。加密

3. 壓縮性

任意長度的數據,算出的md5值得長度都是固定的。.net

4. 弱碰撞性

已知原數據和其md5的值,想找到一個具備相同md5值得數據(即僞造數據)是很是困難的。blog

4. md5的用途

  • 密碼的加密存儲,用戶設置密碼時,服務端只記錄這個密碼的MD5,而不記錄密碼自己,之後驗證用戶身份時,只須要將用戶輸入的密碼再次作一下MD5後,與記錄的MD5做一個比較便可驗證其密碼的合法性。
  • 數字簽名,好比發佈一個程序,爲了防止別人在你的程序裏插入病毒或木馬,你能夠在發佈這個程序的同時,公開這個程序文件的MD5碼,這樣別人只須要在任何地方下載這個程序後作一次MD5,而後跟公開的這個MD5做一個比較就知道這個程序是否被第三方修改過。
  • 文件完整性驗證,好比當下載一個文件時,服務器返回的信息中包括這個文件的md5,在本地下載完畢時進行md5,將兩個md5值進行比較,若是一致則說明文件完整沒有丟包現象。
  • 文件上傳,好比百度雲實現的秒傳,就是對比你上傳的文件md5在百度服務器是否已經存在了。

5. 一些疑問

1. 同一個文件用不一樣的語言計算出來的md5同樣嗎?

只要算法正確,都是同樣的。md5

2. 拷貝的文件md5會改變嗎?

不會。字符串

3. 還有什麼其餘的摘要算法麼?

除了MD5,還有更安全的SHA-1,SHA-2(包括SHA-22四、SHA-25六、SHA-384,和SHA-512 ),SHA-3,RIPEMD-160等哈希加密算法

參考:

關於王小云破解MD5之我見 :https://blog.csdn.net/raptor/...

MD5做用有哪些:https://blog.csdn.net/jike_ya...

MD5算法原理及其實現:https://blog.csdn.net/u012611...

相關文章
相關標籤/搜索