python的hashlib提供了常見的摘要演算法,如md5、sha1等
什麼是摘要演算法了?摘要演算法又稱雜湊演算法、雜湊演算法。
它通過乙個函式,把任意長度的資料轉化魏乙個長度固定的資料串(通常用十六進製制的字串表示)。
摘要演算法就是通過摘要函式f()對任意長度的資料data計算出固定長度的摘要digest,可以來核對你想要的資料是否被篡改了。
摘要演算法之所以能指出資料是否被篡改,就是因為摘要函式是乙個單向函式,計算f(data)很容易,但通過digest反推data卻非常困難。
而且,對原始資料做乙個bit的修改,都會導致計算出的摘要完全不同。
我們以最常見的md5為例:
importhashlib
md5 = hashlib.md5() #
選擇摘要演算法中的md5類進行例項化,得到md5
md5.update(b"
everything is passible
") #
對乙個字串進行摘要
print(md5.hexdigest()) #
找摘要演算法要結果
計算結果如下:
a8c816f56c74b68e4d547769531a46d1
如果資料很大,可以分多次呼叫update()進行摘要,最後計算的結果是一樣的:
importhashlib
md5 =hashlib.md5()
md5.update(b
"everything")
md5.update(b
"is passible")
print(md5.hexdigest())
md5是最常見的摘要演算法,速度很快,生成結果是固定的128bit位元組,通常用乙個32位的16進製制字串表示。
另一種常見的摘要演算法就是sha1,呼叫sha1和呼叫md5完全類似:
importhashlib
sha1 =hashlib.sha1()
sha1.update(b
"everything is passible")
print(sha1.hexdigest())
計算結果:
000da64f15dce120bd685b189c3e169a1f67753b
sha1的結果是160bit位元組,通常用乙個40位的十六進製制字串表示。
比sha1更安全的演算法是sha256和sha512,不過越安全的演算法越慢,而且摘要長度更長。
hashlib一般在檔案的一致性校驗和加密認證這兩方面使用的比較多。
由於常用口令的md5值很容易被計算出來,一般我們會新增一些操作,比如「加鹽」,就是通過對原始口令加乙個複雜字串來實現。比如:
#前後加了一些特殊字串,減少了出現的機率。
import
hashlib
md5 =hashlib.md5()
md5.update(b
"*)_#$%^&everything is passible%^&")
print(md5.hexdigest())
小結:
摘要演算法在很多地方都有廣泛的應用。要注意摘要演算法不是加密演算法,不能用於加密(因為無法通過摘要反推明文),只能用於防篡改和客戶驗證。
python學習筆記5 加密模組hashlib
import hashlib md5 ybm pwd yuanbapqingsdfs234ff234hf f m hashlib.md5 bytes ybq ybm pwd.encode 把字串轉成bytes型別 m.update bytes ybq 加密,不能字串,只能傳bytes型別,二進位制 ...
python 常用模組
1.告訴直譯器 找模組 import sysunix要絕度路徑 只有第一次匯入執行。name main 2.當做包,必須包含乙個命名為 init py的檔案 模組 3.dir看模組裡有什麼 下劃線開始,不是給模組外部用的。過濾 import copy n for n in dir copy if n...
python常用模組
logging 日誌是我們排查問題的關鍵利器,寫好日誌記錄,當我們發生問題時,可以快速定位 範圍進行修改 logging將日誌列印到螢幕,日誌級別大小關係為 critical error warning info debug notset,當然也可以自己定義日誌級別 預設logging預設的日誌級別...