1. 程式人生 > 其它 >常用內建模組(三)

常用內建模組(三)

常用內建模組(三)

hashlib加密模組

'''主要用來做文字加密'''
# 什麼是加密?
	將明文(人看得懂)通過特殊手段變成密文(人看不懂)
    密文資料的表現形式一般都是一串沒有規則的字串
    
# 加密演算法
	加密演算法就是把明文轉成密文的準則
    演算法的難易程度可以根據產生密文的長短來判斷
    例如,md5演算法

# 基本使用
	import hashlib

    pwd = 'oscar123'
    md5 = hashlib.md5()  # 指定演算法,md5
    md5.update(pwd.encode('utf8'))  # 將明文傳遞給md5物件,注意md5只能接收二進位制型別
    print(md5.hexdigest())  # 獲取密文
    
    執行結果:
        9d87d0e415b28ccc638a396e58e705d3
        
'''
	演算法一致,同樣的明文經加密得到的密文一定一致
	加密的結果無法反解密
'''

# 加鹽處理
	目的:增加破解難度
     原理:在原本明文的基礎上增加干擾項
     eg:
        pwd = 'oscar123'
        md5 = hashlib.md5()
        md5.update(pwd.encode('utf8'))
        md5.update('我就是要讓你解不開'.encode('utf8'))  # 新增干擾內容
        print(md5.hexdigest())  # 獲取密文
    執行結果:
        33d99f7c96c5f42dc7f1bde9ba99a90a

# 動態加鹽
	干擾項可以動態變化的
    如把時間戳當干擾項
"""
加密應用場景
1.密碼加密如何比對
	使用者輸入的還是明文但是到了程式裡面之後會採用相同的加密演算法變成密文
	之後拿著密文與跟資料庫裡面的密文比對如果一致就是密碼正確不一致就是錯誤
	
2.檔案內容一致性校驗
	作為軟體的提供者 我們在提供安全軟體的同時會對給該軟體內容做加密處理得到一個該安全軟體獨有的密文
	使用者在下載軟體之後也會對內容做相同的加密之後比對兩次密文是否一致
	如果是表示中途沒有被修改 如果不是表示中途被修改過 可能存在病毒 
"""
針對大檔案一致性校驗的優化策略
	如果一個檔案有10G 那麼如果全部讀取並加密速度太慢
  這個時候可以考慮對檔案內容進行切片讀取並加密的操作

logging模組

'''日誌模組的主要作用是記錄程式執行的過程,便於檢視程式執行情況'''
# 針對日誌模組 我們只需要聽流程思路 最後CV即可 無需詳細記憶

# 1.日誌等級
	import logging
  # 日誌按照重要程度分為五個級別:預設只有達到warning警告級別及以上才會記錄日誌
  # logging.debug('debug message')  # 10
  # logging.info('info message')  # 20
  # logging.warning('warning message')  # 30
  # logging.error('error message')  # 40
  # logging.critical('critical message')  # 50
 
# 2.基本使用
	import logging

  file_handler = logging.FileHandler(filename='x1.log', mode='a', encoding='utf-8', )
  # 所有的格式不需要記憶 後續幾乎都是拷貝加修改
  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('FBI警告')