hashlib、logging模組
目錄
1.hashlib加密模組
2.logging日誌模組
內容
hashlib模組
加密:將明文(人看得懂)資料通過一些手段變成密文資料(人看不懂)
密文資料的表現形式一般都是一串沒有規則的字串
最為常見的就是對使用者的密碼加密 防止密碼洩露
基本使用 import hashlib
1.指定演算法>>>:md5演算法(最為常見 一般的業務需求足夠了)
md5 = hashlib.md5()
2.將明文資料傳遞給演算法物件>>>: update
md5.update(b'hello') # 如果字串中是純數字和英文 那麼直接在前面加'b'轉成bytes型別
3.獲取加密之後的密文資料>>>: hexdigest
res = md5.hexdigest() print(res) # 5d41402abc4b2a76b9719d911017c592
4.在傳入資料的時候 只要內容一致 那麼演算法的結果肯定一致
md5 = hashlib.md5() md5.update(b'hello') md5.update(b'world') md5.update(b'jason') print(md5.hexdigest()) # 8faebe82e744992e51c86845cac3e1b7 md5.updata(b'helloworldjason') print(md5.hexdigest()) # 8faebe82e744992e51c86845cac3e1b7
加密補充
1.加密之後的結果是無法直接反解密的
所謂的反解密其實就是暴力破解>>>:反覆的猜
md5解密內部本質:提前想好很多可能是密碼的組合
2.加鹽處理:增加破解的難度
import hashlib md5 = hashlib.md5() md5.updata('你追我‘.encode('utf8')) md5.update(b'123') print(md5.hexdigest()) # ce850e70febde5f3506fec0479dc0f96
3.動態加鹽:干擾項動態變化
可以是使用者名稱的一部分 也可以當前時間
加密應用場景
1.密碼加密如何比對
使用者輸入的還是明文但是到了程式裡面之後會採用相同的加密演算法變成密文
之後拿著密文與資料庫裡面的密文比對 如果一致就是密碼正確不一致就是錯誤
2.檔案內容一致性校驗
作為軟體的提供者 我們在提供安全軟體的同時會對該軟體內容做加密處理得到一個該安全軟體獨有的密文
使用者在下載軟體之後也會對內容做相同的加密之後比對兩次密文是否一致
如果是表示中途沒有被修改 如果不是表示中途被修改過 可能存在病毒
3.針對大檔案一致性校驗的優化策略
如果一個檔案有10G 那麼如果全部讀取並加密速度太慢 這個時候可以考慮對檔案內容進行切片讀取並加密的操作
logging模組
1.日誌模組就是在程式的各個環境記錄 便於後續的檢視
2.日誌等級
日誌按照重要程度分為五個級別:預設只有達到warning警告級別及以上才會記錄日誌
logging.debug('debug message') # 級別1 logging.indo('info message') # 級別2 logging.warning('warning message') # 級別3 logging.error('error message') # 級別4 logging.critical('critical message') # 級別5
3.基本使用
建立日誌: FileHandler
import logging file_handler = logging.filehandler(filename = 'x.log',mode = 'a',encoding = 'utf8')
新增日誌內容:basicConfig
logging.basicConfig(format = '%(asctime)s - %(name)s - %(levelname)s - %(module)s: %(message)s',datefmt = '%Y - %m - %d %H : %M : %S : %p',handlers = [file_handler,],level = logging.ERROR) logging.error('警告’)