Discuss / Python / 第二题有点懵,哪位大佬能帮忙解答下,谢谢了

第二题有点懵,哪位大佬能帮忙解答下,谢谢了

Topic source

greatzues

#1 Created at ... [Delete] [Delete and Lock User]

先提交第一题的作业:

def login(user, password):
    P = hashlib.md5(password.encode('utf-8')).hexdigest() # same as above code
    if db[user] == P:
        return True
    else:
        return False

第二题通过随机数加盐,那我怎么知道加的盐是什么,不知道盐的话,那么生成的摘要按道理会不一样。

self.salt = ''.join([chr(random.randint(48, 122)) for i in range(20)])

通过这条语句获得的盐再和password相加传入user的数据库中,相当于数据库中存储的数据为

db = {
    [username]:[hashlib.md5((password + self.salt + username + 'the-Salt').encode('utf-8')).hexdigest()]
}

但我都不知道self.salt,怎么利用用户输入的密码计算出摘要? 想了一天都还没想通,哪位大佬能解答下[捂脸]

greatzues

#2 Created at ... [Delete] [Delete and Lock User]

没事了,偷偷看了其他同学的答案[捂脸],发现self.salt可以通过db[username].selt获取,最近脑子有点短路。

第二题作业:

def login(username, password):
    if username in db.keys():
        user = db[username]
        return user.password == get_md5(password + user.salt)
    return False

原来salt在初始化时已经保存起来了,老糊涂了!不过这样简单优化后,效果是非常明显的,即使输入123456密码,计算出的摘要也不一样。

另外我上面的问题也写错了,这里看错了,看成register方法了

db = {
    [username]:[hashlib.md5((password + self.salt + username + 'the-Salt').encode('utf-8')).hexdigest()]
}

  • 1

Reply