[MD5哈希函数在Python中更改数据

问题描述 投票:1回答:1

我正在尝试使用Tkinter GUI在Python中制作一个Login程序,并使用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函数返回不同的值。因此,当我第一次按下“提交”时,它将返回“ md5哈希对象@ 0x03845C68”,但是从第二次以后,当我按下具有相同名称和密码的“提交”时,它将返回“ md5哈希对象@ 0x03845DE8”。这就产生了一个问题,如要登录,程序将使用密码,再次使用哈希函数,然后将新的哈希对象与数据库中的哈希对象进行比较,这是不同的,因为它将混乱“帐户创建”中的值。 >

我怀疑str(hashlib.md5(bytepass))可能与它有关,因为在删除str()之前,它在登录中一直在做相同的事情,但是我需要将哈希对象转换为字符串放在MySQL中。

我正在尝试使用Tkinter GUI在Python中制作一个Login程序,并使用hashlib MD5对密码进行哈希处理。这是我的帐户创建代码。 def AccountEntry():tk.Label(m,text =“ ...

python mysql tkinter md5 hashlib
1个回答
1
投票

您没有从该调用中获得md5哈希;您得到的object

© www.soinside.com 2019 - 2024. All rights reserved.