一、hashlib
特点1 哈希通过丢失一部分数据,使得无法从结果逆推出输入所以哈希算法是不可逆的
特点2 哈希相同输入得到相同的结果,不同的输入得到不同的结果 特点2
import hashlib
1,常见的哈希算法:md5,sha1,sha
import hashlib
md5 = hashlib.md5(b"123")
2,盐值混淆
md5.update(b"abc")
print(md5.hexdigest())
import hmac
key = b"1" 对称加密使用到的密钥
h = hmac.new(key, b"2", "md5")
print(h.hexdigest())
save_account = "123@qq.com"
save_passwd = "a906449d5769fa7361d7ecc6aa3f6d28"
account = input("请输入你的账户:")
passwd = input("请输入你的密码")
If account==save_account and hashlib.md5(passwd.encode()).hexdigest() == save_passwd:
print("登陆成功")
else:
print("登录失败")
二、学生登陆系统
def register():
account = input("请输入注册的用户名:") 用户输入账户
if os.path.exists("account.txt"):检测账户是否存在于文件中
account_dc = json.load(open("account.txt", "rt"))
else:
account_dc = {}
if account_dc.get(account):如果账户存在
print("该账户已存在,请重新注册") 提醒用户重新输入账户
else: 如果账户不存在
password = input("请输入密码:")用户输入密码
confirm = input("请再次输入密码进行确认:")
if password == confirm: 将用户的账户密码保存到文件中
encrypt_pwd = hashlib.md5(password.encode()).hexdigest()
account_dc[account] = encrypt_pwd
json.dump(account_dc, open("account.txt", "wt"))
打印用户注册成功
print("恭喜注册成功") 打印用户注册成功
else:前后两次密码如果不一致
print("前后密码不一致,请重新注册")告诉用户密码输入错误重新注册
def login():
account_dc = json.load(open("account.txt", "rt"))读取系统中保存的账户信息
account = input("请输入用户名:")请输入要登录的账户:
password = input("请输入密码:")请输入你的密码:
encrypt_pwd = hashlib.md5(password.encode()).hexdigest()判断用户的账户是否存在于文件中
if account_dc.get(account): 如果存在
if account_dc[account] == encrypt_pwd:如果该账户的密码是和用户输入的密码相同
print("登陆成功")打印登录成功
else:如果不同
print("登陆失败")打印登录失败
else:如果不存在
print("登陆失败")打印登陆失败
"""
1.注册
2.登陆
3.退出程序
请输入你的选择:
"""
while True:
select = input(menu)
if select == "1":1.注册
register()
elif select == "2": 2.登陆
login()
elif select == "3":退出程序
sys.exit()