我正试图将一个项目从python2.7迁移到python3.7,并遇到一个带有hmac摘要的问题。运行以下代码会产生两种不同的结果
import hmac, hashlib
print(hmac.new(bytes([]), bytes([]), hashlib.sha1).hexdigest())
在python2.7上:1bd590e48bea8f0c8cc70602bc55d317c3de7c52
在python3.7上:fbdb1d1b18aa6c08324b7d64b71fb76370690e1d
为什么这两个结果不同?你知道吗
在python3.7中,
bytes()
和bytes([])
都被解释为b''
。你知道吗在Python2.7中,
bytes()
被解释为''
,这大致相当于Python3.7中的b''
。你知道吗但是,python2.7将
bytes([])
解释为'[]'
。你知道吗这就是差异的根源。如果使用
bytes()
或b''
而不是bytes([])
,则在Python2.7和Python3.7中应该得到相同的结果。你知道吗在2.7
bytes([])
中是str类型,而在3.7bytes([])
中是bytes类型。你知道吗如果对2.7和3.7中的键和消息都使用类似于
b"hello"
的方式进行sub,那么您将得到相同的哈希值。你知道吗相关问题 更多 >
编程相关推荐