記錄#
- 今天學習的是密碼安全,對密碼進行 salt 和 hash。
- salt 應該保證是唯一不重複的,每個使用者的 salt 值都是單獨的。
- salt 的目的是保證密碼無法被逆向對撞,也就是黑客用彩虹表進行對撞。
- hash 是一種演算法,還有 md5 也是。
- 今天的練習是寫一個登錄程式,包括創建使用者和使用者登錄兩個功能。
CODE#
from replit import db
import random
print("🌟登錄系統🌟")
def AddUser():
username = input("使用者名稱 > ")
password = input("密碼 > ")
salt = random.randint(1000, 9999)
newpass = hash(f"{password}{salt}")
db[username] = {"password": newpass, "salt": salt}
print("成功")
def Login():
username = input("使用者名稱 > ")
password = input("密碼 > ")
salt = db[username]["salt"]
newpass = hash(f"{password}{salt}")
if db[username]:
if newpass == db[username]["password"]:
print(f"{db[username]}, 歡迎!")
else:
print("抱歉1")
else:
print("抱歉2")
while True:
menu = input("1: 新增使用者\n2: 登錄\n")
if menu == "1":
AddUser()
elif menu == "2":
Login()