Discuss / Python / 根据上次的记录,修改了三行代码

根据上次的记录,修改了三行代码

Topic source

松霜杨雪

#1 Created at ... [Delete] [Delete and Lock User]
# !/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')

  • 1

Reply