有什么方法可以将散列数据从摘要版本转换为十六进制版本
Is there any ways to convert hash data from digest version to hexdigest version
我想从我当前使用的库中获取一个字符串格式的值。
现在库 return 一个字节类型的值,但我想以字符串类型获取它。所以我使用 bytes.decode() 来转换它,但它给出了一个错误,因为它无法解码某些字符。
我深入了解了图书馆的运作方式。原来它使用这个方法来提供一个散列和 return 值返回
hashlib.sha256(data).digest()
值的一个例子是
b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc\
然后我解码它并得到一个错误。
那么有什么方法可以将它变回字符串类型,或者我必须创建自己的散列数据版本并改用 hexdigest()。
**已编辑
举个真实的错误例子
b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc\x19\x05\x1e\xa3z\xbe\xdf(\xec\xd4r'
return这个错误
*** UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte
您应该可以使用 binacii.hexlify
:
import binascii
binary_string = b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc'
hex_string = binascii.hexlify(binary_string)
print(hex_string)
输出:
b'cee0302d59844d32bdca915c8203dd44b33fbb7edc'
如果该值如上所述返回摘要,
hashlib.sha256(data).digest()
然后为了得到这个的十六进制摘要,
您可以使用以下代码,
hex_digest = digest.encode('hex').decode()
示例:
digest = b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc'
hex_digest = digest.encode('hex').decode()
print(hex_digest)
u'cee0302d59844d32bdca915c8203dd44b33fbb7edc'
我想从我当前使用的库中获取一个字符串格式的值。
现在库 return 一个字节类型的值,但我想以字符串类型获取它。所以我使用 bytes.decode() 来转换它,但它给出了一个错误,因为它无法解码某些字符。
我深入了解了图书馆的运作方式。原来它使用这个方法来提供一个散列和 return 值返回
hashlib.sha256(data).digest()
值的一个例子是
b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc\
然后我解码它并得到一个错误。
那么有什么方法可以将它变回字符串类型,或者我必须创建自己的散列数据版本并改用 hexdigest()。
**已编辑
举个真实的错误例子
b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc\x19\x05\x1e\xa3z\xbe\xdf(\xec\xd4r'
return这个错误
*** UnicodeDecodeError: 'utf-8' codec can't decode byte 0xce in position 0: invalid continuation byte
您应该可以使用 binacii.hexlify
:
import binascii
binary_string = b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc'
hex_string = binascii.hexlify(binary_string)
print(hex_string)
输出:
b'cee0302d59844d32bdca915c8203dd44b33fbb7edc'
如果该值如上所述返回摘要,
hashlib.sha256(data).digest()
然后为了得到这个的十六进制摘要, 您可以使用以下代码,
hex_digest = digest.encode('hex').decode()
示例:
digest = b'\xce\xe00-Y\x84M2\xbd\xca\x91\\x82\x03\xddD\xb3?\xbb~\xdc'
hex_digest = digest.encode('hex').decode()
print(hex_digest)
u'cee0302d59844d32bdca915c8203dd44b33fbb7edc'