为什么Python2.7和Python3.7上的hmac摘要不同?

2024-09-29 17:17:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图将一个项目从python2.7迁移到python3.7,并遇到一个带有hmac摘要的问题。运行以下代码会产生两种不同的结果

import hmac, hashlib
print(hmac.new(bytes([]), bytes([]), hashlib.sha1).hexdigest())

在python2.7上:1bd590e48bea8f0c8cc70602bc55d317c3de7c52

在python3.7上:fbdb1d1b18aa6c08324b7d64b71fb76370690e1d

为什么这两个结果不同?你知道吗


Tags: 项目代码importnewbyteshmacsha1hashlib
2条回答

在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.7 bytes([])中是bytes类型。你知道吗

如果对2.7和3.7中的键和消息都使用类似于b"hello"的方式进行sub,那么您将得到相同的哈希值。你知道吗

相关问题 更多 >

    热门问题