Discuss / Python / 练习1不写了,只写了练习2

练习1不写了,只写了练习2

Topic source

松霜杨雪

#1 Created at ... [Delete] [Delete and Lock User]
# !/usr/bin/python
# -*- coding: UTF-8 -*-

import hashlib
import random

db = {}


def get_md5(s):
    return hashlib.md5(s.encode('utf-8')).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