python常用模組 hashlib模組

2022-03-14 07:11:31 字數 1702 閱讀 1629

python的hashlib提供了常見的摘要演算法,如md5、sha1等

什麼是摘要演算法了?摘要演算法又稱雜湊演算法、雜湊演算法。

它通過乙個函式,把任意長度的資料轉化魏乙個長度固定的資料串(通常用十六進製制的字串表示)。

摘要演算法就是通過摘要函式f()對任意長度的資料data計算出固定長度的摘要digest,可以來核對你想要的資料是否被篡改了。

摘要演算法之所以能指出資料是否被篡改,就是因為摘要函式是乙個單向函式,計算f(data)很容易,但通過digest反推data卻非常困難。

而且,對原始資料做乙個bit的修改,都會導致計算出的摘要完全不同。

我們以最常見的md5為例:

import

hashlib

md5 = hashlib.md5() #

選擇摘要演算法中的md5類進行例項化,得到md5

md5.update(b"

everything is passible

") #

對乙個字串進行摘要

print(md5.hexdigest()) #

找摘要演算法要結果

計算結果如下:

a8c816f56c74b68e4d547769531a46d1

如果資料很大,可以分多次呼叫update()進行摘要,最後計算的結果是一樣的:

import

hashlib

md5 =hashlib.md5()

md5.update(b

"everything")

md5.update(b

"is passible")

print(md5.hexdigest())

md5是最常見的摘要演算法,速度很快,生成結果是固定的128bit位元組,通常用乙個32位的16進製制字串表示。

另一種常見的摘要演算法就是sha1,呼叫sha1和呼叫md5完全類似:

import

hashlib

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預設的日誌級別...