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[username]
return user.password == hmac_md5(user.key, password)
# 测试:
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')
# your code goes here
aW1wb3J0IGhtYWMsIHJhbmRvbQoKZGVmIGhtYWNfbWQ1KGtleSwgcyk6CiAgICByZXR1cm4gaG1hYy5uZXcoa2V5LmVuY29kZSgndXRmLTgnKSwgcy5lbmNvZGUoJ3V0Zi04JyksICdNRDUnKS5oZXhkaWdlc3QoKQoKY2xhc3MgVXNlcihvYmplY3QpOgogICAgZGVmIF9faW5pdF9fKHNlbGYsIHVzZXJuYW1lLCBwYXNzd29yZCk6CiAgICAgICAgc2VsZi51c2VybmFtZSA9IHVzZXJuYW1lCiAgICAgICAgc2VsZi5rZXkgPSAnJy5qb2luKFtjaHIocmFuZG9tLnJhbmRpbnQoNDgsIDEyMikpIGZvciBpIGluIHJhbmdlKDIwKV0pCiAgICAgICAgc2VsZi5wYXNzd29yZCA9IGhtYWNfbWQ1KHNlbGYua2V5LCBwYXNzd29yZCkKCmRiID0gewogICAgJ21pY2hhZWwnOiBVc2VyKCdtaWNoYWVsJywgJzEyMzQ1NicpLAogICAgJ2JvYic6IFVzZXIoJ2JvYicsICdhYmM5OTknKSwKICAgICdhbGljZSc6IFVzZXIoJ2FsaWNlJywgJ2FsaWNlMjAwOCcpCn0KCmRlZiBsb2dpbih1c2VybmFtZSwgcGFzc3dvcmQpOgogICAgdXNlciA9IGRiW3VzZXJuYW1lXQogICAgcmV0dXJuIHVzZXIucGFzc3dvcmQgPT0gaG1hY19tZDUodXNlci5rZXksIHBhc3N3b3JkKQoKIyDmtYvor5U6CmFzc2VydCBsb2dpbignbWljaGFlbCcsICcxMjM0NTYnKQphc3NlcnQgbG9naW4oJ2JvYicsICdhYmM5OTknKQphc3NlcnQgbG9naW4oJ2FsaWNlJywgJ2FsaWNlMjAwOCcpCmFzc2VydCBub3QgbG9naW4oJ21pY2hhZWwnLCAnMTIzNDU2NycpCmFzc2VydCBub3QgbG9naW4oJ2JvYicsICcxMjM0NTYnKQphc3NlcnQgbm90IGxvZ2luKCdhbGljZScsICdBbGljZTIwMDgnKQpwcmludCgnb2snKQoKIyB5b3VyIGNvZGUgZ29lcyBoZXJl