Python常用模組之hashlib

2021-08-25 05:35:23 字數 4508 閱讀 9511

python裡面的hashlib模組提供了很多加密的演算法,這裡介紹一下hashlib的簡單使用事例,用hashlib的md5演算法加密資料

importhashlib

hash=hashlib.md5()#md5物件,md5不能反解,但是加密是固定的,就是關係是一一對應,所以有缺陷,可以被對撞出來

hash.update(bytes('admin',encoding='utf-8'))#要對哪個字串進行加密,就放這裡

print(hash.hexdigest())#拿到加密字串

# hash2=hashlib.sha384()#不同演算法,hashlib很多加密演算法

# hash2.update(bytes('admin',encoding='utf-8'))

# print(hash.hexdigest())

hash3=hashlib.md5(bytes('abd',encoding='utf-8'))

''' 如果沒有引數,所以md5遵守乙個規則,生成同乙個對應關係,如果加了引數,

就是在原先加密的基礎上再加密一層,這樣的話引數只有自己知道,防止被撞庫,

因為別人永遠拿不到這個引數

'''

hash3.update(bytes('admin',encoding='utf-8'))

print(hash3.hexdigest())

如圖為執行結果 

這裡寫乙個利用md5進行使用者登陸**進行註冊之後密碼加密的基本事例,加深理解

#hashlib簡單使用

defmd5(arg):#這是加密函式,將傳進來的函式加密

md5_pwd=hashlib.md5(bytes('abd',encoding='utf-8'))

md5_pwd.update(bytes(arg,encoding='utf-8'))

returnmd5_pwd.hexdigest()#返回加密的資料

deflog(user,pwd):#登陸時候時候的函式,由於md5不能反解,因此登陸的時候用正解

withopen('db','r',encoding='utf-8') as f:

forlineinf:

u,p=line.strip().split('|')

ifu==userandp==md5(pwd):#登陸的時候驗證使用者名稱以及加密的密碼跟之前儲存的是否一樣

returntrue

defregister(user,pwd):#註冊的時候把使用者名稱和加密的密碼寫進檔案,儲存起來

withopen('db','a',encoding='utf-8') as f:

temp=user+'|'+md5(pwd)

f.write(temp)

i=input('1表示登陸,2表示註冊:')

ifi=='2':

user=input('使用者名稱:')

pwd=input('密碼:')

register(user,pwd)

elifi=='1':

user=user=input('使用者名稱:')

pwd=input('密碼:')

r=log(user,pwd)#驗證使用者名稱和密碼

ifr==true:

print('登陸成功')

else:

print('登陸失敗')

else:

print('賬號不存在')

這裡只簡單寫了乙個使用者的註冊以及登陸

PYTHON 之 常用模組

使用需要先導入 import calendar呼叫例子 calendar 獲取一年的日曆字串 引數 w 每個日期之間的間隔字元數 l 每週所占用的行數 c 每個月之間的間隔字元數 cal calendar.calendar 2017 print type cal print cal cal cale...

Python之常用模組

time模組 時間表示形式 1 時間戳 timestamp 通常來說,時間戳表示的是從1970年1月1日00 00 00開始按秒計算的偏移量。我們執行 type time.time 返回的是float型別。2 格式化的時間字串 format string 1988 09 29 3 元組 struct...

python常用模組之os模組

os模組可以處理檔案和目錄這些日常手動需要做的操作,比如常用的刪除檔案等。此外,os不受平台限制,非常方便。常用功能 1 os.name 顯示當前使用的平台 import os print os.name nt windows2 os.getcwd 顯示當前python指令碼工作路徑 print o...