用户注册和登陆系统,采用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!")
posted @ 2018-07-01 14:06  地瓜来了  阅读(350)  评论(0编辑  收藏  举报