我正在尝试创建一个包含用户密码的简单软件。我认为不是将代码中的密码保存为文本,也许可以尝试学习一下哈希如何工作。然后我尝试将hashlib库用于python。对我来说,这段代码应该能够看到密码x和y匹配,因此继续假设的“登录”,但由于某种原因它不能做我想做的事情。有语法错误吗?密码匹配是否以不同的方式工作?我需要帮助才能让软件比较2个哈希,然后登录。
import hashlib
pw1=hashlib.md5(input("please enter your password").encode('utf-8'))
pw2=hashlib.md5(input("please re-enter your password").encode('utf-8'))
if pw1.hexdigest == pw2.hexdigest:
print("Success. Passwords match")
if pw1.hexdigest != pw2.hexdigest:
print("Failure. Passwords do not match")
hashlib实例的hexdigest
部分是函数本身。你必须打电话给它:
hex1 = pw1.hexdigest()
hex2 = pw2.hexdigest()
例如。现在你可以比较两个字符串hex1
和hex2
。
(作为metatoaster said in a comment,不要使用md5。)
顺便提一下,请注意pw1
和pw2
是哈希的实例:你可以为它们提供更多的数据。在这种情况下,这样做没有意义,但是:
pw1.update(b'more data')
修改下一次调用pw1.hexdigest()
返回的内容。