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

特雅斯·米斯拉(Tejas Misra)

我试图使用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中。

切普纳

您不会从该调用中获得md5哈希值;您得到的对象具有可以返回md5哈希值的方法。

hexpass = hashlib.md5(bytepass).hexdigest()

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章