将列表的每个元素转换为 sha256

Convert each element of a list to sha256

我想知道如何将列表的每个元素转换为 sha256 并获取另一个列表中的值。 我使用的数据是:

lst=['Under.csv', 'Upper.csv', 'Below.csv', 'Outside.csv', 'Inside.csv', 'Out.csv', 'in.xlsx', 'water.xlsx', 'sun.xlsx']

我正在尝试使用列表推导:

lst1=[hashlib.sha256(b"i").hexdigest().upper() for i in lst]

但我只是重复了第一个元素的第一个 sha256。

还有:

lst2=[hashlib.sha256("{}".format(b'i')).hexdigest().upper() for i in lst]

另外一个我得到一个错误:

AttributeError: 'bytes' object has no attribute 'format'

我怎样才能解决这个问题并以与 lst 中的字符串相同的顺序获取另一个列表中每个元素的 sha256?

lst1 的输出是:

['DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7', 'DE7D1B721A1E0632B7CF04EDF5032C8ECFFA9F9A08492152B926F1A5A7E765D7']

正如我所说,我只是重复了第一个值。

你得到了相同的值,因为你在 hashlib.sha256() 函数中使用了相同的字符串。您需要将 i 作为变量传递。尝试正确传递变量并对其进行编码

代码:

lst1=[hashlib.sha256(i.encode()).hexdigest().upper() for i in lst]

在您的第一个示例中,您将字符串“i”传递给函数。

你应该使用这样的东西: [hashlib.sha256(i.encode()).hexdigest().upper() for i in lst]

在这里你传递 i 编码的值。