在Python 2中,可以通过执行以下命令来对字符串进行哈希处理:
但是,当我尝试使用文件时:
someText = "a"
hashlib.sha256(someText).hexdigest()
但在Python 3中,需要进行编码:
someText = "a".encode("ascii")
hashlib.sha256(someText).hexdigest()
但是,当我尝试使用文件时:
f = open(fin, "r")
sha = hashlib.sha256()
while True:
data = f.read(2 ** 20).encode("ascii")
if not data:
break
sha.update(data)
f.close()
我在很多文件中都看到了这个:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe1 in position 8: invalid continuation byte
我猜这是因为它是一个二进制文件,很可能无法转换为ASCII码。
如何在不出现此问题的情况下对文件进行编码?
open(fin, "rb")
以二进制模式打开该文件。 - BrenBarn