Discuss / Python / 记录答案

记录答案

Topic source

Nobita

#1 Created at ... [Delete] [Delete and Lock User]
import hmac, random

def hmac_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.key = ''.join([chr(random.randint(48, 122)) for i in range(20)])
        self.password = hmac_md5(self.key, password)

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



def login(username, password):
    user = db.get(username)
    if user:
        return user.password == hmac_md5(user.key, password)

    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')

print('ok')

  • 1

Reply