【问题标题】:Python Password Hashing with hashlib使用 hashlib 的 Python 密码散列
【发布时间】:2021-09-15 09:37:29
【问题描述】:

我正在尝试对我正在创建的登录系统的密码进行哈希处理。我正在使用 hashlib 导入并使用 blake2b 哈希算法。我似乎无法弄清楚如何散列变量,例如 passwordEntry。所有 hashlib 示例都只是 blake2b 散列字符。例如:blake2b(b'IWantToHashThis') 我很困惑为什么必须在哈希中包含“b”字母。如果我尝试散列一个变量,则“b”字母不能与我想要散列的变量结束。我尝试散列变量的示例:blake2b(passwordEntry) 我尝试散列变量的另一个示例:blake2b(b passwordEntry) 在第二个示例中,我刚刚给出了 hashlib认为它正在尝试散列变量“b passwordEntry”。就像我之前所说的,“b”字母必须包含在散列算法中才能正确执行。 对不起,如果我理解这个问题很长,很难理解

【问题讨论】:

  • b"Some data" 代表原始二进制数据,而不是文本数据。您需要yourText.encode('utf-8') 将文本转换为二进制数据。然后就是这个:blake2b(passwordEntry.encode('utf-8')).hexdigest() 它应该返回你想要的
  • 加密函数使用 bytes。如果你做passwordEntry = "IWantToHashThis" 那么passwordEntry 是一个字符串。要将其转换为等效的 bytes 对象,请将其编码为 UTF-8:blake2b(passwordEntry.encode("UTF-8")
  • 请阅读documentation 以获取hashlib.blake2b。此函数需要 bytes-like object 作为参数。
  • @BoarGules UTF-8 应该被引用为字符串

标签: python hash hashlib login-system


【解决方案1】:

字母b 仅在引号前有效,[", ', """, '''']。 并且要注意这个字符串是bytes。 如果要将字符串转换为字节,可以通过 b"string""string".encode()。但是,在您的情况下,您只能使用 strencode() 方法,因为 b 仅适用于文字字符串。 所以在你的情况下,它将是blake2b(passwordEntry.encode())

【讨论】:

  • 什么意思?确实如此。请更具体
  • 'NoneType' 对象没有属性 'encode' 这是错误。
  • 这与我的回答无关,那是因为您的passwordEntryNone 并且您必须检查原因,如果您将密码设置为 None [除了上面的问题,b passwordEntry]
  • 好的,感谢您提供此信息。我会尝试寻找问题。
猜你喜欢
  • 2018-03-01
  • 2018-06-30
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
相关资源
最近更新 更多