用户注册和登陆系统,采用hmac加密密码(就地txt存储版本)

import hashlib
import pickle, os
import hmac, random


def hmac_sha1(key, s):
return hmac.new(key.encode('utf-8'), s.encode('utf-8'), 'MD5').hexdigest()


# 获取用户名和密码信息
if os.path.exists('/Users/lewisliu/user_information.txt'):
with open('/Users/lewisliu/user_information.txt', 'rb') as f:
user_information = pickle.load(f)
else:
user_information = dict()

# 注册或者登陆
while True:
# 选择模式,注册、登陆、退出
model = input("pleas input enroll/login/exit:")
if model == 'enroll':
name = input("please input your name:")
# 用户名重复识别
if name in user_information.keys():
print("name is occupied!")
continue
password = input("please input your password:")
# 数据库添加用户名和密码
key = 'liu' # ''.join([chr(random.randint(48, 122)) for i in range(20)])
user_information[name] = hmac_sha1(key, password)
# sha1 = hashlib.sha1()
# sha1.update(password.encode('utf-8'))
# user_information[name] = sha1.hexdigest()
elif model == 'login':
name = input("please input your name:")
if name not in user_information.keys():
print("name is not exist!")
continue
password = input("please input your password:")
key = 'liu' # ''.join([chr(random.randint(48, 122)) for i in range(20)])
password = hmac_sha1(key, password)
# sha1 = hashlib.sha1()
# sha1.update(password.encode('utf-8'))
# password = sha1.hexdigest()
if user_information[name] == password:
print("Wellcome!")
else:
print("wrong name or password! Exit!")
with open('/Users/lewisliu/user_information.txt', 'wb') as f:
pickle.dump(user_information, f)
exit()
elif model == 'exit':
with open('/Users/lewisliu/user_information.txt', 'wb') as f:
pickle.dump(user_information, f)
exit()
else:
print("model wrong!")

转载于:https://www.cnblogs.com/LewisAAA/p/9249969.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值