我在python2和python3中都使用hashlib.md5生成哈希。 python2输出字符串,而python3输出字节。 我必须对python3中的字符串使用“ latin1”编码,以匹配默认的python2编码。
我想确保python3输出的结果与python2相同,并使用字符串进行进一步处理。
问题:如何确保/转换md5输出字符串?
原因是我的python2是有效的输出,并且我正在将脚本从py2迁移到py3,因此想验证输出,但目前无法将字节与字符串进行比较。
python2:
import hashlib
s = "fred"
hashlib.md5("fred").digest()
out:'W \ n \ x90 \ xbf \ xbf \ x8c〜\ xab] \ xc5 \ xd4 \ xe2h2 \ xd5 \ xb1'
python3:
import hashlib
s = "fred"
hashlib.md5("fred".encode("latin1")).digest()
输出:b'W \ n \ x90 \ xbf \ xbf \ x8c〜\ xab] \ xc5 \ xd4 \ xe2h2 \ xd5 \ xb1'
答案 0 :(得分: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'