我想将字节变量转换为字符串。当然,以前也有与我有关的问题。但是,尝试以这种方式对md5()的文件进行哈希处理:
import hashlib
with open("C:\\boot.ini","r") as f:
r=f.read()
a=hashlib.md5()
a.update(r.encode('utf8'))
bytes_data=a.digest()
print(bytes_data)
r=type(bytes_data)
print(r) # <-- Just to be sure, it is in bytes
myString=bytes_data.decode(encoding='UTF-8')
我收到此错误:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe3 in position 1: invalid continuation byte
由于这个问题,我了解问题的原因,但是我正在处理不同的文件以计算其哈希,因此我无法控制字节,那么如何解决此问题?
该hash.digest()
返回值是不是一个UTF-8编码的字符串。不要尝试对其进行解码;它是一个字节序列在0-255范围内和这些字节都没有表示文本。
并非所有bytes
内容都对文本进行编码。这就是这样的价值之一。
hash.hexdigest()
如果要打印可打印的内容,请使用。此方法返回以十六进制数字表示的字节(每个摘要字节两个十六进制字符)。与他人共享MD5摘要时,这是常用的形式。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句