# !/usr/bin/python # -*- coding: UTF-8 -*- import hmac import random db = {} def get_md5(key, s): return hmac.new(key.encode('utf-8'), s.encode('utf-8'), 'MD5').hexdigest() class User(object): def __init__(self, username, password): self.username = username self.password = password self.salt = '' def register(self): if self.username in db: print('The username "%s" is used!' % self.username) return False else: self.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)]) self.password = get_md5(self.password , self.salt) self.__add_User_toDB() # print('Register Success!') return True def login(self): userInfo = self.__get_user_fromDB() # print(userInfo) if userInfo != None: tmpPwd = get_md5(self.password , userInfo['salt']) if tmpPwd != userInfo['password']: return False else: # print('Login Success!') return True else: print('The user "%s" is not found!' % self.username) return False def __add_User_toDB(self): db[self.username] = self.__dict__ # print(db) return True def __get_user_fromDB(self): if self.username in db: return db[self.username] else: return None def register(username, password): return User(username, password).register() def login(username, password): return User(username, password).login() # print(db) assert register('michael', '123456') assert register('bob', 'abc999') assert register('alice', 'alice2008') assert login('michael', '123456') assert login('bob', 'abc999') assert login('alice', 'alice2008') assert not login('michael', '1234567') assert not login('bob', '123456') assert not login('alice', 'Alice2008') print('ok')
Sign in to make a reply
松霜杨雪