MD5基本概念
MD5,即信息摘要算法,英文為MD5 Message-Digest Algorithm,是一種被廣泛使用的密碼散列函數(shù),可以產(chǎn)生出一個128位(16字節(jié))的散列值(hash value),也叫散列值,用于確保信息傳輸完整一致。
它可以從一個字符串或一個文件中按照一定的規(guī)則生成一個特殊的字符串,這個特殊的字符串就被稱之為摘要。
MD5的作用
通常用于校驗一組數(shù)據(jù)是否被篡改。例如,校驗一個文件是否被篡改。
MD5特點及現(xiàn)狀:
1)、hash值長度固定。它是一段固定長度的數(shù)據(jù),即16個字節(jié)(128bit)。無論原始數(shù)據(jù)是多長或多短,其MD5值都是128bit。
2)、通常,計算出來的md5值包含0~9和大小寫字母a ~ f, 以及A ~ F的32位可見字符。即將128bit的數(shù)據(jù)打印輸出時,是一個32位的字符串。(因為直接輸出16bytes的數(shù)據(jù),是亂碼,不可見)。
3)、hash值的確定性,一個原始數(shù)據(jù)的MD5值是唯一的,同一個原始數(shù)據(jù)不可能會計算出多個不同的MD5值。
4)、碰撞性,原始數(shù)據(jù)與其MD5值并不是一一對應(yīng)的,有可能多個原始數(shù)據(jù)計算出來的MD5值是一樣的,這就是碰撞。
5)、不可逆。即由已知的MD5值,無法還原出它的原始數(shù)據(jù)的。當(dāng)然,很多網(wǎng)站可以查詢md5的原始數(shù)據(jù),是因為事先已經(jīng)保存了數(shù)以萬計的原始數(shù)據(jù)以及它的hash值,我們查詢時,只是進(jìn)行已知數(shù)據(jù)的查詢匹配。
由于hash算法是不可逆的, 所以不存在解密的邏輯。
6)、不安全。由于md5無法防止碰撞(collision),因此不適用于安全性認(rèn)證,如SSL公開密鑰認(rèn)證或是數(shù)字簽名等用途。
7)、我國著名教授王小云已經(jīng)破解了包括MD5、SHA-1在內(nèi)的5個國際通用哈希函數(shù)算法。
MD5值的獲取:
很多平臺自帶md5值的獲取,例如,可以用下面的命令計算一個文件的md5值:
% md5 urlinfo.json
MD5 (urlinfo.json) = e58b910fda6a2aed3d00fde20a28c0a7
MD5值的獲?。簆ython代碼:
1、 不加鹽(salt)的md5值
利用python獲取md5值的代碼如下:
from hashlib import md5
obj = md5()
obj.update("hello python!!!".encode("utf-8"))
bs = obj.hexdigest()
print(bs)
運行結(jié)果:
% python3 md5_test.py
ffd986dc69195bd6c1397a76e0df6cc4
用在線網(wǎng)站進(jìn)行md5值的獲?。?br>
可以看到,和我們用python算出的結(jié)果一樣。
2、 加鹽(salt)的md5值
from hashlib import md5
salt = "aabbccddeeff"
obj = md5(salt.encode("utf-8")) # 加鹽
obj.update("hello python!!!".encode("utf-8"))
bs = obj.hexdigest()
print(bs)
運行結(jié)果:
% python3 md5_test.py
355d1341087e44f53551293193fd706c
3、 擴展sha256的md5值
from hashlib import sha1, sha256
sha = sha256(b'salt')
sha.update(b'hello python!!!')
print(sha.hexdigest())
運行結(jié)果:
python3 md5_test.py
24d50be77cb3d092520041983964d9f5daa8962c19f4fb6318bd2764406aab64文章來源:http://www.zghlxwxcb.cn/news/detail-466775.html
說明:不論是sha1, sha256, md5都屬于摘要算法.,都是在計算hash值(散列值),只是散列的程度不同而已。文章來源地址http://www.zghlxwxcb.cn/news/detail-466775.html
到了這里,關(guān)于MD5算法:利用python進(jìn)行md5 hash值的獲取的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!