首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MD5中更改数据的Hash函数

MD5中更改数据的Hash函数
EN

Stack Overflow用户
提问于 2019-11-04 20:54:25
回答 1查看 669关注 0票数 1

我试图使用Tkinter在Python中创建一个登录程序,并使用hashlib MD5对密码进行散列。这是我创建帐户的代码。

代码语言:javascript
复制
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函数返回不同的值。因此,当我第一次按下"submit“时,它返回'md5散列对象@ 0x03845C68‘,但它从第二次按下具有相同名称和密码的"submit”时返回'md5散列对象@ 0x03845DE8’。这就产生了一个问题,因为为了登录,程序接受密码,再次使用散列函数,然后将新的散列对象与数据库中的散列对象进行比较,这与数据库中的哈希对象不同,因为它会混淆帐户创建中的值。

我怀疑str(hashlib.md5(bytepass))可能与它有关,因为它在登录中执行相同的操作,直到移除str(),但我需要将散列对象转换为字符串以将其放入MySQL中。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-11-04 20:59:59

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

代码语言:javascript
复制
hexpass = hashlib.md5(bytepass).hexdigest()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58700878

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档