【发布时间】: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