【发布时间】:2020-05-27 21:21:36
【问题描述】:
我在 python2 和 python3 中都使用 hashlib.md5 生成哈希。 python2 输出字符串,而 python3 输出字节。 我必须对 python3 中的字符串使用“latin1”编码来匹配默认的 python2 编码。
我想确保 python3 输出与 python2 相同的结果并使用字符串进行进一步处理。
问题:如何保证/转换md5输出字符串?
原因是我的 python2 是有效输出,我正在将脚本从 py2 迁移到 py3,所以想验证输出,但目前我无法将字节与字符串进行比较。
python2:
import hashlib
s = "fred"
hashlib.md5("fred").digest()
输出:'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'
【问题讨论】:
-
嘿!我不太明白你的问题......你想总是将输出转换为字符串吗?然后只需使用内置的
str函数......或者你到底在问什么?我认为这需要编辑 -
在 python3 中:str(hashlib.md5("fred".encode("latin1")).digest())[2:-1] 与在 python2 中不同:hashlib.md5(" fred").digest() 作为额外的 \ 被添加
标签: python string byte md5 hashlib