Class里面需要修改:在 User 类的构造函数中,当计算密码的 MD5 哈希值时,应该先拼接密码和盐值,然后再调用 get_md5() 函数。
import hashlib, random def get_md5(user, pwd): return hashlib.md5((user.username + pwd + user.salt).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(self, password) db = { 'michael': User('michael', '123456'), 'bob': User('bob', 'abc999'), 'alice': User('alice', 'alice2008') } def login(username, password): user = db[username] return user.password == get_md5(user, password)
Sign in to make a reply
明天过后.
Class里面需要修改:在 User 类的构造函数中,当计算密码的 MD5 哈希值时,应该先拼接密码和盐值,然后再调用 get_md5() 函数。