Python是一門(mén)高級(jí)編程語(yǔ)言,其作為腳本語(yǔ)言廣泛應(yīng)用在Web開(kāi)發(fā)、網(wǎng)絡(luò)爬蟲(chóng)、數(shù)據(jù)分析和人工智能等領(lǐng)域。在Web開(kāi)發(fā)中,身份驗(yàn)證是非常重要的一個(gè)環(huán)節(jié)。Python提供了多種身份驗(yàn)證方式,下面我們來(lái)介紹一下常用的幾種。
# 基本的用戶(hù)名密碼驗(yàn)證 import getpass username = input("請(qǐng)輸入用戶(hù)名:") password = getpass.getpass("請(qǐng)輸入密碼:") if username == "admin" and password == "123456": print("登錄成功!") else: print("用戶(hù)名或密碼錯(cuò)誤!")
上面的代碼通過(guò)Python內(nèi)置的getpass庫(kù)可以安全地獲取用戶(hù)輸入的密碼。這種方式適用于基本的Web應(yīng)用,但不夠安全。更好的方式是使用加密算法對(duì)密碼進(jìn)行保護(hù)。
# 使用Hash算法加密密碼 import hashlib def encrypt_password(password): md5 = hashlib.md5() md5.update(password.encode("utf-8")) return md5.hexdigest() input_password = input("請(qǐng)輸入密碼:") encrypted_password = encrypt_password(input_password) # 存儲(chǔ)encrypted_password到數(shù)據(jù)庫(kù)中
上面的代碼使用Python內(nèi)置的hashlib庫(kù)進(jìn)行MD5加密。將加密后的密碼存儲(chǔ)到數(shù)據(jù)庫(kù)中,當(dāng)用戶(hù)登錄時(shí)再進(jìn)行密碼驗(yàn)證。
# Token身份驗(yàn)證 import time import hashlib def generate_token(username): timestamp = str(int(time.time())) token = hashlib.md5((username + timestamp).encode("utf-8")).hexdigest() return token def check_token(username, token): timestamp = str(int(time.time())) correct_token = hashlib.md5((username + timestamp).encode("utf-8")).hexdigest() return token == correct_token username = input("請(qǐng)輸入用戶(hù)名:") token = generate_token(username) # 把token返回給客戶(hù)端 # 客戶(hù)端發(fā)送請(qǐng)求時(shí)帶上token request_token = input("請(qǐng)輸入token:") if check_token(username, request_token): print("身份驗(yàn)證通過(guò)!") else: print("身份驗(yàn)證失敗!")
上面的代碼使用時(shí)間戳和哈希算法生成Token,將Token返回給客戶(hù)端。客戶(hù)端發(fā)送請(qǐng)求時(shí)帶上Token,服務(wù)器通過(guò)驗(yàn)證Token來(lái)判斷用戶(hù)身份。