Discuss / Python / 记录第二题答案

记录第二题答案

Topic source

Nobita

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

import hashlib, random

def get_md5(s):
    return hashlib.md5(s.encode('utf-8')).hexdigest()

class User(object):
    def __init__(self, username, password):
        self.username = username
        self.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)])
        self.password = get_md5(password + self.salt)

    def print_info(self):
        print('name =', self.username, '\b, password =', self.password, '\b, salt =', self.salt)



db = {
    'michael': User('michael', '123456'),
    'bob': User('bob', 'abc999'),
    'alice': User('alice', 'alice2008')
}

def login(username, password):
    user = db.get(username)
    if user:
        user.print_info()
        return user.password == get_md5(password + user.salt)
    return False



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')
assert not login('nobita', 'Alice2008')

  • 1

Reply