摘要,日志
1.hashlib 模塊:
由于數據的不安全性,為了保證用戶的信息絕對安全,所有所有人的賬號密碼不能以明文的形式存儲,
而是經過適當的處理以密文的形式存儲.
hashlib對同一個字符串在不同的語言,不同的環境(操作系統,版本,時間)中加密得到的是同一個密文串,不同的字符串得到的密文是不一樣的
這個算法不可逆
2.摘要算法:
# 原始加密: import hashlib obj = hashlib.md5() obj.update('666'.encode('utf-8')) print(obj.hexdigest()) # 加鹽 obj = hashlib.md5('123'.encode('utf-8')) obj.update('666'.encode('utf-8')) print(obj.hexdigest()) # 動態加鹽 ,避免惡意撞庫 name = 'liming' pwd = '123456' def login(name,passwd):obj = hashlib.md5(name.encode('utf-8'))obj.update(pwd.encode('utf-8'))ret = obj.hexdigest()with open('t1',) as f:for line in f:uname,paswd = line.strip().split()if name == uname and paswd == ret:return Trueelse:return False rot = login(name,pwd)3.hashlib摘要算法,多種算法中常用的兩種md5,sha1.
md5是32位16進制的數字字符組成的字符串
特點:應用最廣泛的摘要算法.
效率高,相對不復雜,安全性也相對低
sha1及其相關系列摘要算法,40位16進行的數字字符組成的字符串.
特點:比md5算法復雜,且sha的n值越大,算法越復雜,耗時越久,效率越低,安全性越高
?
4.文件的一致性校驗:
下載的是視頻,或者大文件,應該以rb的形式來讀,讀出來的都是bytes
不能按行來讀,也不能一次性讀出來:
import os import hashlib path = r'E:\01_pycharm\venv\sum_01_python.py' def sum_size(path,buffer=1024):obj = hashlib.md5()s_size = os.path.getsize(path)with open(path, 'rb') as f:while s_size:count = f.read(buffer)s_size -= len(count)#d41d8cd98f00b204e9800998ecf8427eret = obj.hexdigest()return ret osd = sum_size(path) print(osd)?
5.configparser 文件配置
6.logging日志:
1,給用戶看:購物記錄'''
2.給內部人員看:程序出錯時幫記錄過程,排除錯誤
3,給非技術看:誰在什么時候做了什么操作
7.日志級別:
import logging logging.basicConfig(level=logging.INFO) #調節日志打印級別 logging.debug('debug message') #計算或工作的細節 logging.info('info message') #記錄用戶的一些增刪改查的操作 logging.warning('warning message') #警告操作 logging.error('error message') #錯誤操作 logging.critical('critical message') #批判的,直接導致程序出錯退出的日志簡單配置
import logging logging.basicConfig(level=logging.INFO,format='%(asctime)s %(filename)s \[line:%(lineno)d]%(levelname)s%(message)s',datefmt = '%c',filename ='test.log') logging.warning('warning message') #警告操作 logging.error('error message') # logging.info('錯誤操作')對象的配置:向文件和屏幕輸出內容
# 先創建一個log對象 logger logger = logging.getLogger() logger.setLevel(logging.DEBUG) # 還要創建一個控制文件輸出的文件操作符 fh = logging.FileHandler('mylog.log') # 還要創建一個控制屏幕輸出的屏幕操作符 sh = logging.StreamHandler() # 要創建一個格式 fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fmt2 = logging.Formatter('%(asctime)s - %(name)s[line:%(lineno)d] - %(levelname)s - %(message)s')# 文件操作符 綁定一個 格式 fh.setFormatter(fmt) # 屏幕操作符 綁定一個 格式 sh.setFormatter(fmt2) sh.setLevel(logging.WARNING) # logger對象來綁定:文件操作符, 屏幕操作符 logger.addHandler(sh) logger.addHandler(fh)
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
?
轉載于:https://www.cnblogs.com/lijinming110/p/9600939.html
總結
- 上一篇: dubbo源码解析-zookeeper创
- 下一篇: 【leetcode】75. Sort C