#!/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')
Sign in to make a reply
Nobita