hashlib.md5 python2 vs python3 (字符串 vs 字节)

问题描述 投票:0回答:1

我在Python2和Python3中使用hashlib.md5生成哈希,Python2输出字符串,而Python3输出字节,我必须在Python3的字符串上使用 "latin1 "编码来匹配默认的Python2编码。

我想确保Python3输出的结果和Python2一样,并使用字符串做进一步处理。

问题:如何确保转换md5输出与python2编码相同,并使用字符串做进一步处理?如何保证转换后的md5输出为字符串?

原因是我的python2是有效的输出,我正在将脚本从py2迁移到py3,所以想验证输出,但目前我无法将字节和字符串进行比较。

python2:

import hashlib


s = "fred"
hashlib.md5("fred").digest()

输出: 'Wnx90xbfxbfx8c~xab]xc5xd4xe2h2xd5xb1'

python3.出: b'Wxnx90xbfxbfx8c~xab]xc5xd4xe2h2xd5xb1'

import hashlib


s = "fred"
hashlib.md5("fred".encode("latin1")).digest()

out: b'W\nx90\xbf\xbf\x8c~\xab]xc5\xd4xe2h2\xd5\xb1'

python string byte md5 hashlib
1个回答
0
投票

你可以通过使用 md5.hexdigest()在Python 2和Python 3中,这将返回一个字符串。


from hashlib import md5

hash_ = md5()
hash_.update(b"test")
print(hash_.hexdigest())

Python 3 的结果。

'098f6bcd4621d373cade4e832627b4f6'

Python 2的结果。

'098f6bcd4621d373cade4e832627b4f6'
© www.soinside.com 2019 - 2024. All rights reserved.