如何将数组中的项目转换为字节以进行散列?

How to turn items in an array into bytes for hashing?

我正在尝试散列通过 easygui 输入的用户输入。 Easygui 将输入存储到一个数组中(我认为),所以当我尝试对用户输入进行哈希处理时,我不确定如何将其转换为字节。

这是我的代码:

import hashlib
import easygui


g = hashlib.sha256(b'helloworld').hexdigest()

l = easygui.enterbox('enter password')

f = hashlib.sha256([l]).hexdigest()

print(g)
print(f)

理想情况下,如果我在 easygui 中输入 'helloworld',它应该 return 相同的散列输出。

当前错误是:

"TypeError: object supporting the buffer API required" at the line f = haslib.sha256([l]).hexdigest()

easygui.enterbox returns 用户输入的文本,或者 None 如果他取消操作。您必须将返回的文本转换为字节数组。 Docs

if l is not None:
    f = hashlib.sha256(l.encode()).hexdigest()

您必须先对给定的字符串进行编码,然后才能对其进行哈希处理。最简单的方法是,只使用为字符串实现的 encode() 方法。

f = hashlib.sha256(l.encode()).hexdigest() print(f)

使用 return 你的 sha256 哈希。