首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么这个hmac摘要在Python 2.7和Python 3.7上是不同的?

hmac摘要在Python 2.7和Python 3.7上不同的原因是因为Python 2.7和Python 3.7在处理字符串编码方面存在差异。

在Python 2.7中,字符串默认使用ASCII编码,而在Python 3.7中,默认使用Unicode编码。这导致了在计算hmac摘要时,对于包含非ASCII字符的字符串,Python 2.7和Python 3.7会得到不同的结果。

具体来说,hmac摘要算法使用密钥对消息进行加密,并生成一个固定长度的摘要。在Python中,可以使用hmac模块来计算hmac摘要。

在Python 2.7中,如果要计算hmac摘要,需要将字符串和密钥都转换为字节类型,然后使用hmac模块的hmac函数进行计算。示例代码如下:

代码语言:txt
复制
import hmac

message = 'Hello World'
key = 'secret_key'

digest = hmac.new(key, message, hashlib.sha256).hexdigest()
print(digest)

在Python 3.7中,由于默认使用Unicode编码,需要将字符串和密钥都转换为字节类型,并指定编码方式。示例代码如下:

代码语言:txt
复制
import hmac

message = 'Hello World'
key = 'secret_key'

digest = hmac.new(key.encode('utf-8'), message.encode('utf-8'), hashlib.sha256).hexdigest()
print(digest)

因此,由于Python 2.7和Python 3.7在字符串编码方面的差异,导致了计算hmac摘要时的差异。为了保证一致性,建议在使用hmac摘要算法时,明确指定字符串和密钥的编码方式,以避免不同版本的Python产生不同的结果。

腾讯云提供了云计算相关的产品和服务,例如云服务器、云数据库、云存储等。您可以访问腾讯云官网了解更多详情:腾讯云

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • [Python004]Python3.7.3安装(Ubuntu16.04)

    前面的文章已经介绍了在Windows上安装Python2和Python3了,现在介绍Linux系统上的安装。Ubuntu16.04上默认安装了Python2.7和Python3.5,Redhat和CentOS上默认安装了Python2.7,注意,不管我们是否要使用默认安装的版本,都不要卸载默认的Python. Ubuntu, Redhat,CentOS的使用占了Linux系统发行版中的大部分,在这些系统上使用Python开发可以直接用默认安装的版本,但是有时候我们需要指定版本,如Redhat中没有Python3,使用Django框架最新LTS版Django2.2需要Python3.6以上版本等.在默认的版本不满足我们的需要时,就需要我们自己安装了,所以这篇文章就是介绍在Ubuntu16.04上安装Python3.7.3的步骤,其他版本的安装步骤类似。

    04
    领券