Python 中的 MD5 哈希函数更改数据
MD5 Hash function changing data in Python
我正在尝试使用 Tkinter GUI 在 Python 中制作一个登录程序,并使用 hashlib MD5 来散列密码。这是我的帐户创建代码。
def AccountEntry():
tk.Label(m, text = "Account Creation").grid(row =2 ,column =1)
tk.Label(m, text = "Enter name").grid(row = 3, column = 0)
ename = tk.Entry(m)
ename.grid(row = 3, column = 1)
tk.Label(m, text = "Enter password").grid(row = 4,column = 0)
epassword = tk.Entry(m, show = "*")
epassword.grid(row = 4, column = 1)
tk.Button(m, text = "Submit", command = lambda:Account(epassword,ename)).grid(row = 5, column = 1)
def Account(epassword,ename):
name = ename.get()
password = epassword.get()
bytepass = bytes(password, 'utf-8')
hexpass = str(hashlib.md5(bytepass))
enter_table = (name,hexpass)
cursor.execute("insert into lusers(name, hexpass) values(%s,%s)",(enter_table))
db.commit()
tk.Label(m, text = "Successfully made account").grid(row = 6, column = 1)
问题基本上是md5函数returns不同的值。所以我第一次按 "submit" 它 returns 'md5 HASH object @ 0x03845C68' 但它 returns 'md5 HASH object @ 0x03845DE8' 从第二次开始当我按相同的 "submit"名称和密码。这会产生一个问题,因为为了登录,程序获取密码,再次使用哈希函数,然后将新的哈希对象与数据库中的对象进行比较,这是不同的,因为它弄乱了帐户创建中的值。
我怀疑 str(hashlib.md5(bytepass)) 可能与它有关,因为它在登录中做同样的事情,直到我删除 str(),但我需要转换哈希对象将其放入 MySQL.
中
您没有从该调用中获取 md5 哈希;你得到一个 对象 有一个方法可以 return md5 散列。
hexpass = hashlib.md5(bytepass).hexdigest()
我正在尝试使用 Tkinter GUI 在 Python 中制作一个登录程序,并使用 hashlib MD5 来散列密码。这是我的帐户创建代码。
def AccountEntry():
tk.Label(m, text = "Account Creation").grid(row =2 ,column =1)
tk.Label(m, text = "Enter name").grid(row = 3, column = 0)
ename = tk.Entry(m)
ename.grid(row = 3, column = 1)
tk.Label(m, text = "Enter password").grid(row = 4,column = 0)
epassword = tk.Entry(m, show = "*")
epassword.grid(row = 4, column = 1)
tk.Button(m, text = "Submit", command = lambda:Account(epassword,ename)).grid(row = 5, column = 1)
def Account(epassword,ename):
name = ename.get()
password = epassword.get()
bytepass = bytes(password, 'utf-8')
hexpass = str(hashlib.md5(bytepass))
enter_table = (name,hexpass)
cursor.execute("insert into lusers(name, hexpass) values(%s,%s)",(enter_table))
db.commit()
tk.Label(m, text = "Successfully made account").grid(row = 6, column = 1)
问题基本上是md5函数returns不同的值。所以我第一次按 "submit" 它 returns 'md5 HASH object @ 0x03845C68' 但它 returns 'md5 HASH object @ 0x03845DE8' 从第二次开始当我按相同的 "submit"名称和密码。这会产生一个问题,因为为了登录,程序获取密码,再次使用哈希函数,然后将新的哈希对象与数据库中的对象进行比较,这是不同的,因为它弄乱了帐户创建中的值。
我怀疑 str(hashlib.md5(bytepass)) 可能与它有关,因为它在登录中做同样的事情,直到我删除 str(),但我需要转换哈希对象将其放入 MySQL.
中您没有从该调用中获取 md5 哈希;你得到一个 对象 有一个方法可以 return md5 散列。
hexpass = hashlib.md5(bytepass).hexdigest()