Python是一種強(qiáng)大的編程語(yǔ)言,可以用于許多不同類型的應(yīng)用程序開發(fā)。其中包括實(shí)現(xiàn)用戶身份驗(yàn)證的功能,比如密碼保護(hù)。下面是一個(gè)用Python編寫的簡(jiǎn)單的用戶密碼創(chuàng)建和驗(yàn)證示例:
import hashlib
# create user
def create_user(username, password):
salt = 'randomstring'
password_hash = hashlib.sha256((password + salt).encode('utf-8')).hexdigest()
with open('passwords.txt', 'a') as f:
f.write(username + ':' + password_hash + ':' + salt + '\n')
# check user credentials
def check_user(username, password):
with open('passwords.txt', 'r') as f:
for line in f:
user, password_hash, salt = line.strip().split(':')
if user == username and password_hash == hashlib.sha256((password + salt).encode('utf-8')).hexdigest():
return True
return False
# create and check user
create_user('john', 'password123')
print(check_user('john', 'password123'))
這段代碼開始定義了兩個(gè)函數(shù)。第一個(gè)函數(shù)被命名為create_user(),它用于創(chuàng)建用戶記錄。它需要兩個(gè)參數(shù):用戶名和密碼。比如在這個(gè)示例中,我們創(chuàng)建了一個(gè)用戶名為“john”,密碼為“password123”的用戶。函數(shù)生成一個(gè)隨機(jī)字符串作為鹽,將鹽和密碼組合起來并使用SHA-256哈希算法進(jìn)行哈希處理。哈希密碼和鹽值一起存儲(chǔ)在一個(gè)文本文件中。
第二個(gè)函數(shù)是check_user(),它用于驗(yàn)證用戶的身份。同樣,它需要兩個(gè)參數(shù):用戶名和密碼。在內(nèi)部,函數(shù)打開密碼文件并逐行讀取每個(gè)用戶名、哈希密碼和鹽值的記錄。如果它在文件中找到了匹配的用戶名,它就將用戶輸入的密碼與鹽值一起哈希處理。如果哈希處理結(jié)果匹配記錄中存儲(chǔ)的哈希值,則函數(shù)將返回True。
最后,我們調(diào)用這兩個(gè)函數(shù)來創(chuàng)建用戶并驗(yàn)證他們的身份。我們可以看到,在這個(gè)示例中,我們成功地創(chuàng)建了用戶,并用相同的密碼進(jìn)行了身份驗(yàn)證。