簡述:
message-digest algorithm 5(信息-摘要算法)。經常說的“MD5加密”,就是它→信息-摘要算法。
md5,其實就是一種算法。可以將一個字符串,或文件,或壓縮包,執行md5后,就可以生成一個固定長度為128bit的串。這個串,基本上是唯一的。
不可逆性:
每個人都有不同的指紋,看到這個人,可以得出他的指紋等信息,並且唯一對應,但你只看一個指紋,是不可能看到或讀到這個人的長相或身份等信息。
特點
- 壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
- 容易計算:從原數據計算出MD5值很容易。
- 抗修改性:對原數據進行任何改動,哪怕只修改1個字節,所得到的MD5值都有很大區別。
- 強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
MD5長度
md5的長度,默認為128bit,也就是128個0和1的二進制串。這樣表達是很不友好的。所以將二進制轉成了16進制,每4個bit表示一個16進制,所以128/4 = 32 換成16進制表示后,為32位了。
為什么網上還有md5是16位的呢?
其實16位的長度,是從32位md5值來的。是將32位md5去掉前八位,去掉后八位得到的。
python代碼實現
基本的example:

1 # -*- coding: utf-8 -*- 2 # coding=utf-8 3 import hashlib 4 5 print("example one") 6 str = "this is a md5 test" 7 8 h1 = hashlib.md5() 9 10 h1.update(str.encode(encoding='utf-8')) 11 12 print("MD5 ency before:" + str) 13 print("MD5 ency after:" + h1.hexdigest()) 14 15 16 print("example two") 17 str = "this is a md5 testQQQQQQQQQQQQQQQQQQQQQQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" 18 19 h1 = hashlib.md5() 20 21 h1.update(str.encode(encoding='utf-8')) 22 23 1,1 Top