【问题标题】:How to convert a password into a hash value?如何将密码转换为哈希值?
【发布时间】:2019-04-14 21:07:55
【问题描述】:

我正在尝试为我的项目创建一个登录系统,我需要对用户密码使用散列,我不确定如何散列变量名称并将其转换为字节以给出密码的十六进制结果。

尝试使用:

hash_object = hashlib.md5(b(password))

和:

hash_object = hashlib.md5((password))

代码

import hashlib

user = {}

username = input("What is your username? ")
password = input("What is your password? ")

hash_object = hashlib.md5((password))
print(hash_object.hexdigest())

错误

Traceback (most recent call last):
  File "E:\loginsystem.py", line 8, in <module>
    hash_object = hashlib.md5((password))
TypeError: Unicode-objects must be encoded before hashing

【问题讨论】:

  • 也 - 不要使用 md5 来散列密码。请参阅此处:security.stackexchange.com/questions/211/… 以获得更好的建议。
  • 如果您只是了解安全性 - 很好。但是,如果您要向公共互联网/实际用户发布某些内容,则不要推出自己的身份验证 - 将其留给专家。
  • 所以它的 utf8 rightttt 大声笑

标签: python python-3.x


【解决方案1】:

使用.encode 方法对密码字符串进行编码。

import hashlib

user = {}

username = input("What is your username? ")
password = input("What is your password? ")

hash_object = hashlib.md5(passsword.encode('utf8'))
print(hash_object.hexdigest())

我推荐这个可以解决一些问题的好帖子:

What is the difference between a string and a byte string?

【讨论】:

  • 感谢您的帮助,我试过了,但出于某种原因会弹出此错误消息
  • 回溯(最近一次调用最后一次):文件“E:/hash_function_example.py”,第 8 行,在 hash_object = hashlib.md5(password.encode('uft-8')) LookupError:未知编码:uft-8
  • 非常感谢我的男人
  • 没问题,乐于助人!
猜你喜欢
  • 2012-06-20
  • 2010-11-25
  • 1970-01-01
  • 2011-02-11
  • 2016-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-23
相关资源
最近更新 更多