hashlib模塊

hashlib模塊

加密模塊,內置不少算法,最經常使用的是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('登陸失敗')
相關文章
相關標籤/搜索