加密模塊,內置不少算法,最經常使用的是MD5python
摘要算法:算法
import hashlib # 獲取一個hashlibMD5對象 res = hashlib.md5()
import hashlib # 獲取一個hashlibMD5對象,並進行賦值,若不賦值後續直接引用,默認加密的是空字符串 res = hashlib.md5() #將字符串轉換從bytes類型 update必定要傳入bytes類型 l1 = '1234' res.update(l1.encode('utf-8')) # 將字符串進行加密 jm_md = res.hexdigest() print(jm_md) # 獲取一個hashlibMD5對象,若不賦值後續直接引用,後續開新的內存空間默認加密的是空字符串 hashlib.md5().update('123456'.encode('utf-8')) hashlib.md5().hexdigest() # ---> 後續開新的內存空間,默認的加密空字符串
以上操做可能會被撞庫破解真實密碼加密
防止撞庫文件:加鹽(在原傳入的數據後追加固定的一串數據)code
import hashlib # 獲取一個hashlibMD5對象 res = hashlib.md5() # 在對象中傳入字符 update必定要傳入bytes類型 l1 = '1234' res.update(l1.encode('utf-8')) # 創造鹽 sal = 'Mr沈' # 加鹽 res.update(sal.encode('utf-8')) # 加密 jm2_md = res.hexdigest() print(jm2_md)
# 模擬用戶登陸操做 # 加密密碼 def md5_obj(n): md5 = hashlib.md5() str1 = n md5.update(str1.encode('utf8')) sal = '沈勇牛批' md5.update(sal.encode('utf8')) res = md5.hexdigest() return res # 拼接用戶名和密碼 res = md5_obj('1234') str2 = f'sheny:{res}' # 寫入文件中 with open('user.txt', 'w', encoding='utf8') as f: f.write(str2) # 讀取出用戶名和密碼 with open('user.txt', 'r', encoding='utf8') as f: user_read = f.read() # 解壓用戶名和密碼 name, pwd = user_read.split(":") # 登陸判斷 while True: username = input('輸入用戶名') password = input('請輸入密碼') if username == name and md5_obj(password) == pwd: print('登陸成功') break else: print('登陸失敗')