hashlib模組和logging模組

2022-02-25 17:43:13 字數 3573 閱讀 3495

hashlib模組:

能夠把乙個字串資料型別的變數轉換成乙個定長的密文的字串

字串裡的每乙個字元都是乙個十六進製制

對於同乙個字串,不管這個字串有多長,只要是相同的,

無論在何種環境下,多少次執行,在任何語言中

使用相同的演算法、相同的手段得到的結果永遠是一樣的

只要是不同的字串,得到的結果一定是不同的

字串---》密文,密文是不可逆的

user=input('賬號:')

pwd=input('密碼:')

md5_obj=hashlib.md5(user.encode('utf-8'))

md5_obj.update(pwd.encode('utf-8'))

s=md5_obj.hexdigest()

print(s)

採用動態加鹽的方式進行密碼加密

def comparesize(fp1,fp2):

import hashlib

md5_obj = hashlib.md5()

with open(fp1, 'rb') as f:

while 1:

md5_obj.update(f.read(102400))

if not f.read(102400):

break

c = md5_obj.hexdigest()

md5_obj1 = hashlib.md5()

with open(fp2, 'rb') as f:

while 1:

md5_obj1.update(f.read(102400))

if not f.read(102400):

break

cc = md5_obj1.hexdigest()

if c == cc:

return ('ok')

else:

return ('ng')

s=r'g:\homework\practice\hashlib練習\1.txt'

s2=r'g:\homework\practice\hashlib練習\2.txt'

flag=comparesize(s,s2)

print(flag)

對於過大的資料夾,可以進行多次update方式後在進行hexdigest運算,不影響結果

logging模組

功能:日誌格式的規範、操作的簡化、日誌的分級管理

logging不能幫你做的事情:

自動生成你要列印的內容

logging模組的使用:

普通配置型 簡單的,可訂製化差

物件配置型 複雜的,可訂製化強

認識日誌分級

import logging

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.debug)

logging.debug('debug message') # 除錯模式

logging.info('info message') # 基礎資訊

logging.warning('warning message') # 警告

logging.error('error message') # 錯誤

logging.critical('critical message')# 嚴重錯誤

根據level決定是否現實debug等級內容

import logging

logging.basicconfig(level=logging.debug,

format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',

datefmt='%a, %d %b %y %h:%m:%s',

filename='test.log')

logging.debug('debug message') # 除錯模式

logging.info('info message') # 基礎資訊

logging.warning('warning message') # 警告

logging.error('error message') # 錯誤

logging.critical('critical message')# 嚴重錯誤

不能夠將乙個log資訊既輸出到螢幕又輸出到檔案

解決辦法:

建立乙個logger物件的形式來操作資料夾

1、建立乙個logger物件

2、建立乙個檔案管理操作符

3、建立乙個螢幕管理操作符

4、建立乙個日誌輸出格式

5、檔案管理操作符繫結乙個格式

6、螢幕管理操作符繫結乙個格式

7、logger物件繫結檔案管理操作符

8、logger物件繫結螢幕管理操作符

import logging

# 建立乙個logger物件

logger = logging.getlogger()

# 建立乙個檔案管理操作符

fh = logging.filehandler('logger.log',encoding='utf-8')

# 建立乙個螢幕管理操作符

sh = logging.streamhandler()

# 建立乙個日誌輸出的格式

format1 = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')

# 檔案管理操作符 繫結乙個 格式

fh.setformatter(format1)

# 螢幕管理操作符 繫結乙個 格式

sh.setformatter(format1)

logger.setlevel(logging.debug)

# logger物件 繫結 檔案管理操作符

# logger.addhandler(fh)

# logger物件 繫結 螢幕管理操作符

logger.addhandler(sh)

logger.debug('debug message') # 除錯模式

logger.info('我的資訊') # 基礎資訊

logger.warning('warning message') # 警告

logger.error('error message') # 錯誤

logger.critical('critical message')# 嚴重錯誤

python os模組和hashlib模組

import os os.getcwd def walk dirname for name in os.listdir dirname path os.path.join dirname,name if os.path.isfile path 判斷該路徑是否為乙個正常的檔案 print path e...

PythonStudy 日誌模組 logging

日誌 日之石日常的流水,將程式執行過程中的狀態或資料盡心記錄,一般是記錄到日誌檔案當中的。在正常的專案之中,專案的執行的一些列印資訊,採用logging列印到檔案當中,這個過程就稱作為 日誌記錄模組 以下為預設的操作日誌模組 匯入日誌模組 import logging logging為預設列印者,是...

模組三hashlib模組

加密模組 摘要演算法 一堆加密演算法的集合體 import hashlib 給密碼加密。檔案的校驗。hashlib 將str型別 通過演算法 一串等長度的數字。1,不同的字串 轉化成數字肯定不同。2,相同的字串即使在不同的計算機上只要使用相同的加密方式 轉化成的數字一定相同。3,hashlib加密不...