首頁 > 常見問題 > md5是什麼

md5是什麼

藏色散人
發布: 2019-06-03 10:08:12
原創
55963 人瀏覽過

MD5在軟體產業是再常見不過的一個詞了,即使你從來沒有使用過它,也不知道它到底是個什麼東西,但你肯定聽過這個詞。

md5是什麼

那到底什麼是MD5呢?是加密演算法嗎?不是的,md5是一種資訊摘要演算法,它可以從一個字串或一個檔案中依照一定的規則產生一個特殊的字串(這個特殊的字串就稱為摘要,我理解就是從文件中摘一些資訊片段加工而來),並且一個文件所對應的MD5摘要是固定的,當文件內容變化後,其MD5值也會不一樣(雖然理論上也有可能會一樣,但機率極小),因此,在應用中經常使用MD5值來驗證一段資料有沒有被竄改。

例如,在資料的傳送方將原始資料產生出MD5值,然後把原始資料連同其MD5值一起傳給接收方,接收該收到資料後,先將原始資料用MD5演算法生成摘要信息,然後再將此摘要信息與發送方發過來的摘要信息進行比較,如果一致就認為原始數據沒有被修改,否則原始數據就是被修改過了。

MD5值有幾個特點:

1、它是一段固定長度的數據,即128bit的由「0」和「1」組成的一段二進制數據。無論原始資料是多長或多短,其MD5值都是128bit。

2、通常(或稱為行業規定),這段128bit的數據,按4bit一組分成32組,每一組按16進制來計算其值,並以字符的形式輸出每個值。例如一組資料以16進位計算出來的值是0-9,印出來也是0-9,如果計算出來的值是a-f,如果直接印出來的話將會是10-15,在java中可以使用String. format(" x", bytes[i])方法來將16進制的a-f 印成字母“a-f”,最終這個128bit的資料將會被印成一個32位元的字串。所以我們通常所說的MD5值就是指這串32位元的由「0-9,a-f」所組成的字串。如果你看到某個MD5不是32位,或發現其中含有「0~f」以外的字符,那肯定是個錯誤的MD5值。

3、確定性,一個原始資料的MD5值是唯一的,同一個原始資料不可能會計算出多個不同的MD5值。

4、碰撞性,原始資料與其MD5值並不是一一對應的,有可能多個原始資料計算出來的MD5值是一樣的,這就是碰撞。

5、不可逆。也就是說如果告訴你一個MD5值,你是無法透過它還原出它的原始資料的,這不是你的技術不夠牛,這是由它的演算法決定的。因為根據第4點,一個給定的MD5值是可能對應多個原始數據的,並且理論上是可以對應無限多個原始數據,所有無法確定到底是由哪個原始數據產生的。

以上是md5是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
md5
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板