模塊hashlib和logging

Python的hashlib提供了常見的摘要算法MD5。python

咱們以常見的摘要算法MD5爲例,計算出一個字符串的MD5值:算法

import hashlib
md5=hashlib.md5()
md5.update('how to use md5 in python'.encode('utf-8'))
print(md5.hexdigest())

若是數據量很大,能夠分塊屢次調用update(),最後計算的結果是同樣的:數據庫

import hashlib
md5=hashlib.md5()
md5.update('how to use md5'.encode('utf-8'))
md5.update(' in python'.encode('utf-8'))
print(md5.hexdigest())

>>>
cdbbdefc48242586611e311f84e921b0

考慮這麼個狀況,不少用戶喜歡用123456,888888,password這些簡單的口令,因而,黑客能夠事先計算出這些經常使用口令的MD5值,獲得一個反推表:ide

'e10adc3949ba59abbe56e057f20f883e': '123456'
'21218cca77804d2ba1922c33e0151105': '888888'
'5f4dcc3b5aa765d61d8327deb882cf99': 'password'

這樣,無需破解,只須要對比數據庫的MD5,黑客就得到了使用經常使用口令的用戶帳號.加密

因爲經常使用口令的MD5值很容易被計算出來,因此,要確保存儲的用戶口令不是那些已經被計算出來的經常使用口令的MD5,這一方法經過對原始口令加一個複雜字符串來實現,俗稱「加鹽」:spa

例如一個簡單的用戶登陸實例:debug

import hashlib

SALT = b'2erer3asdfwerxdf34sdfsdfs90'
def md5(pwd):
    # 實例化對象
    obj = hashlib.md5(SALT)
    # 寫入要加密的字節
    obj.update(pwd.encode('utf-8'))
    # 獲取密文
    return obj.hexdigest()  # c5395258d82599e5f1bec3be1e4dea4a

user = input("請輸入用戶名:")
pwd = input("請輸入密碼:")
if user == 'oldboy' and md5(pwd) == 'c5395258d82599e5f1bec3be1e4dea4a':
    print('登陸成功')
else:
    print('登陸失敗')
View Code

 

logging模塊日誌

import logging  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message') 

默認狀況下Python的logging模塊將日誌打印到了標準輸出中,且只顯示了大於等於WARNING級別的日誌,這說明默認的日誌級別設置爲WARNING(日誌級別等級CRITICAL > ERROR > WARNING > INFO > DEBUG),默認的日誌格式爲日誌級別:Logger名稱:用戶輸出消息。code

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='/tmp/test.log',  
                    filemode='w')  
  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message')
相關文章
相關標籤/搜索