我正在尝试将用户输入的密码字段与已经过哈希处理的密码进行比较。我查看了文档,但未能找到我一直在寻找的内容。我使用
哈希密码pw_bytes = password.encode('utf-8')
hashed = bcrypt.hashpw(pw_bytes, bcrypt.gensalt())
如果我重新哈希密码,它会给我一个不同的哈希值。如何从我的数据库中取出密码,或者重新哈希用户提供的密码以使它们匹配?
答案 0 :(得分:2)
您需要使用加密密码保存bcrypt.gensalt()
的结果,并在散列后续密码尝试时再次将其传递给bcrypt()
。
盐的目的是让你的哈希每个用户都是唯一的 - 换句话说,如果两个用户使用相同的密码,那么哈希应该理想地不同。
如果所有哈希都受到损害,这个盐就是为了保护你的密码。
有人可以对字典中的每个单词运行哈希,然后查看哈希值以查找匹配项。这些查找表称为彩虹表。
如果操作正确,每个密码都有一个独特的盐。然后,彩虹表将需要为字典组合中的每个单词添加一个条目,以及每个可能的盐组合。这会将已经很大的表的所需大小相乘。