首页
学习
活动
专区
工具
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产生不同的结果。

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

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

相关·内容

Python数据分析入门(一):搭建环境

环境管理: conda能跟virtualenv一样管理不同Python环境,不同环境之间互相隔离,互不影响为什么需要创建不同环境呢?...原因有时候项目比较多,但是项目依赖包不一样,比如A项目用Python2开发,而B项目用Python3开发,那么我们在同一台电脑就需要两套不同环境来支撑他们运行了。...这个环境python解释器根据anaconda来,如果anaconda为3.7,那么将默认使用3.7环境,如果anaconda内置2.7,那么将默认使用2.7环境。...实际,我们只需要在安装时候指定python版本,如果这个版本现在不存在,那么anaconda会自动给我们下载。...比如我们创建完一个新环境后,想要在这个环境中安装包(比如numpy),那么可以通过以下代码来实现: python activate xxx conda install numpy 以下再介绍一些包管理常用命令

44620

环境搭建

Anaconda3集成了Python3环境,Anaconda2集成了Python2环境。Anaconda默认集成包,属于内置Python包。...# 环境管理 conda能跟virtualenv一样管理不同Python环境,不同环境之间互相隔离,互不影响为什么需要创建不同环境呢?...原因有时候项目比较多,但是项目依赖包不一样,比如A项目用Python2开发,而B项目用Python3开发,那么我们在同一台电脑就需要两套不同环境来支撑他们运行了。...解释器根据anaconda来,如果anaconda为3.7,那么将默认使用3.7环境,如果anaconda内置2.7,那么将默认使用2.7环境。...实际,我们只需要在安装时候指定python版本,如果这个版本现在不存在,那么anaconda会自动给我们下载。

1.3K20

Python 包都装到哪了?

(主要还是下次再有人问,我就可以链接甩脸了哈哈) Python如何寻找包 现在大家电脑很可能不只有一个Python,还有更多虚拟环境,导致安装包时候,一不小心你就忘记注意安装包路径了。...) 这里如果你用Linux默认Python,就是/usr,如果你自己使用默认选项编译,就是/usr/local。...从上面第二条可以看到不同次版本号Python三方库路径不同,如果你把Python从3.6升级到3.7那么之前装三方库都没法用了。当然你可以整个文件夹都拷贝过去,大部分情况不会出问题。...但需注意,避免把不同Python版本包路径加到PYTHONPATH里,比如PYTHONPATH=/home/frostming/.local/lib/python2.7/site-packages,因为...第一种方式第二种方式大同小异,区别是第一种方式使用Python解释器写在pip里,一般情况下,如果你pip路径/bin/pip,那么Python路径对应就是<path_prefix

5.3K21

Python3.7.3安装(Ubuntu16.04)

前面的文章已经介绍了在Windows安装Python2Python3了,现在介绍Linux系统安装。...Ubuntu16.04默认安装了Python2.7Python3.5,RedhatCentOS默认安装了Python2.7,注意,不管我们是否要使用默认安装版本,都不要卸载默认Python....2.现在要开始安装Python了,要先找安装目录,Linux在根目录下有一个目录/usr/,Unix Software Resource(Unix 操作系统软件资源)缩写,这个目录 相当于Windows...操作系统“C:\Windows\”“C:\Program files\”这两个目录综合体,所以一般把软件安装在这个目录之下.然后将桌面的软件安装包移动到/usr/下,需要在前面加sudo使用root...3.现在我们在/usr/bin/下创建软链接python3.7python37,指向我们安装Python3.7.3,然后在这台Ubuntu虚拟机任何位置执行python27或python3.7,都是进入

1.1K40

mac系统pycharm配置python环境_mac python开发环境

一、下载安装Python3解释器 使用Python3 Python之父Guido van Rossum在邮件列表宣布 Python 2.7将于2020年1月1日终止支持。...用户如果想要在这个日期之后继续得到与Python 2.7有关支持,则需要付费给商业供应商。...(Professional)社区版(Community),社区版免费,一般使用社区版就可以了。...下载完成后,安装过程安装QQ等软件过程一样,不要告诉我你不会,艹要是那样的话请出去补补课 三、macPycharm使用教程 Pycharm整体结构 工具栏中可以对IDE做一些设置 项目文件区主要是自己工程下一些文件...Python版本,一个Python 2.7,一个3.6,这取决你自己电脑里安装了几个Python 这里选择我们安装Python3 – 下图解释如何参看我们安装Python3路径 3.项目创建成功后

1.8K50

我用4年时间解决了Python GIL一个bug...

这一次,我不仅安装了我PyGILState_Ensure()修复,还编写了单元测试test_embed.test_bpo20891(): 好这个bug现在已经在Python 2.7, 3.6 master...至少,用python代码不可以建。 如果一个线程不是由Python产生的话,此修复不能解决这个问题,但是这个线程调用了PyGILState_Ensure()。 为什么不始终创建GIL?...然后我在master分支重新启用了test_embed.test_bpo20891()。 没有适用于Python 2.73.6第二个修复,抱歉!...而且,Python 2.7没有单元测试,因为它很难backport。 至少,Python 2.73.6获得了我第一个PyGILState_Ensure()修复。...我推出了第一个修复程序,但在macOS发现了一个新不同竞态条件。 我不得不深入研究Python GIL历史(1992年)。 幸运,Guido van Rossum也能够阐述其基本原理。

2.4K100

Python交互注释介绍

Python程序交互 如何能让Python识别读取用户输入,就像windows安装程序那样傻瓜式交互呢,下面我们简单介绍一下Python交互输入输出。 实例代码如下: #!...说明: Python交互式输入使用内置函数input()实现,但是在Python2.7.x版本时候可以同时使用raw_input()input()函数,但是在Python3.5.x版本就没有...password: ") File "", line 1, in NameError: name 'fashengba' is not defined 从上面结果我们可以看到在Python2.7...,执行过程结果如下: 请输入密码: Password is 110119 ***print end Python代码注释 随着学习深入,当你利用Python写复杂程序时候有上千上万行代码,有些代码你花了很久写出来...inner.update(password.translate(_trans_36)) outer.update(password.translate(_trans_5C)) 代码注释原则: 不用全部加注释,只需要在自己觉得重要或不好理解部分加注释即可

48120

小白入门Python数据科学全教程

内容目录 1、Python数据分析基本概况 为何使用Python做数据分析? Python2.7还是Python3.7? 如何安装Python?...但是考虑到在学习代码上节省时间,Python依然不二选择。 Python 2.7还是Python 3.7? 很多初学者还在纠结选择Python 2.7还是Python 3.7?...这两个版本有非常大差异,简直就是两种语言。它们各有各优缺点,取决于你使用需求。 为什么Python 2.7 绝对优势社区支持!...如果你将Python用于特定应用程序,如高度依赖外部模块web开发,那么建议使用Python 2.7 为什么Python 3.7 语法更加简洁快速。...Python元组与列表类似,不同之处在于元组元素不能修改。元组使用小括号,列表使用方括号。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

1.1K10

python虚拟环境管理之virtual

虚拟环境作用 使python环境拥有独立包,避免污染原本python环境。为不同项目创建不同环境可以避免安装库过于庞大和相互干扰。...例如你想在同一台机器开发用python2python3写2个项目就可以用虚拟环境进行隔离,又网站开发、爬虫科学计算所需要包都不一样也可以用虚拟环境。...venv #指定python2.7解释器 virtualenv -p /usr/bin/python3.7 venv #指定python3.7解释器 使用 source venv/bin/activate...=/usr/local/python3.7/bin/python py3 指定解释器为3.7 mkvirtualenv -p python3.7 pynew 指定版本比较喜欢用这个 使用 workon...显示环境路径 pipenv --venv #显示虚拟环境信息 pipenv --py #显示解释器信息 pipenv --rm #删除当前虚拟环境 exit #退出虚拟环境 conda Conda 一个开源软件包管理系统环境管理系统

1K20

解决python3中关于import疑难杂症

对于python2而言,方法一方法二都是相对导入,效果一样,但是前者被称为隐式相对导入,后者被称为显式相对导入,方法三绝对导入(会在sys.path中路径搜索) 对于python3而言,方法二相对导入.../Python.framework/Versions/3.7/lib/python3.7/site-packages'] # 模块运行: 第一个目录当前路径 $ python3 -B -m mypackage.module_foo...查找包路径,我们有两种方法可以解决这个问题。...方法一:通过模块运行方式解决(推荐) 本质我们希望将module_3.py这个模块作为脚本运行,所以我们可以带上-m参数: $ cd src # 代码中是以src为根目录, 所以需要进入到src...尽量不要使用相对引用 Python3不建议使用相对引用,最好遵循一定开发规范,不要在代码中混用绝对引用与相对引用。

1.6K30

python基础教程:虚拟环境

有时候也会用到某个包模块特定版本,可能这个特定版本修复了某个bug,或者依赖接口只有该版本有。也可能系统安装了Python 3.6,但应用程序要求3.7Python 2.7。...如果我们写程序依赖某个库1.0版本,而系统安装1.2版本,应用程序就无法运行;如果应用程序要求Python 2.7,则它在Python3就可能会保存。...MACOS,运行: source /path/to/myenv/bin/activate (脚本这个英文为bash shell关系编写,你如果使用英文csh或fish壳,使用就要activate.csh...Ubuntu 16.04Python2使用virtualenvwrapper创建Python 3虚拟环境 Ubuntu 16.04系统默认Python还是2,要在这个系统使用Python 3.6...(1)Ubuntu 16.04安装Python 3.6,3.73.8 可以通过PPA源安装,也可以从源码编译安装为了方便(安装以后更新),我们选择PPA: sudo add-apt-repository

78630

5年 Python 功力,总结了 10 个开发技巧

这就是 Python 默认开启自动关联异常上下文。 如果你想自己控制这个上下文,可以加个 from 关键字(from 语法会有个限制,就是第二个表达式必须另一个异常类或实例。)...'/home/wangbm/.local/lib/python3.7/site-packages' (exists) ENABLE_USER_SITE: True 从输出你可以发现,这个路径会比...为了实现这个需求,Python 3.2 + 中给我们提供了一个机制,可以很方便实现,而不需要你去写这样逻辑代码。 这个机制实现于 functool 模块中 lru_cache 装饰器。...,性能最佳 typed:若为 True,则不同参数类型调用将分别缓存。...,而是直接返回缓存里结果 calculating: 1 + 2 3 3 calculating: 2 + 3 5 下面这个经典斐波那契数列,当你指定 n 较大时,会存在大量重复计算 def fib

56410

详解Python虚拟环境原理及使用

(环境:在macOS Mojave系统使用最新版本Python 3.7.x) 目录 为什么使用虚拟环境? 什么虚拟环境? 使用虚拟环境 管理环境 虚拟环境如何运行? 1....为什么使用虚拟环境? 虚拟环境为一系列潜在问题提供简单解决方案,尤其在以下几个方面: 允许不同项目使用不同版本程序包,从而解决依赖性问题。...虚拟环境用于依赖项管理项目隔离Python工具,允许Python站点包(第三方库)安装在本地特定项目的隔离目录中,而不是全局安装(即作为系统范围内Python一部分)。...要在机器运行测试项目,Sara需要做就是在项目的根目录中创建一个虚拟环境: Sara% cd test-project/ Sara% python3 -m venv venv/ 并使用pip install...然而另一个原因始终要在项目中列入需求文件。 5. 虚拟环境如何做到这一点? 想了解更多有关虚拟环境信息吗?比如,活动环境如何使用正确Python解释程序并如何找到合适第三方库?

2.6K20

CentOS 7.5下安装Python 3.x与原有Python 2.x共存

Linux下默认系统自带Python2.X版本,这个版本被系统很多程序所依赖,所以不建议删除,如果使用最新Python3那么我们知道编译安装源码包系统默认包之间没有任何影响,所以可以安装...1、下载Linux平台Python3.x安装包(本文测试安装下载Python 3.7版本) [linuxidc@localhost Linux公社 www.linuxidc.com]...版本 备份或删除Python2.x mv  /usr/bin/python  /usr/bin/python2.7 新建指向新版本Python3.xpip3软连接.../pip3  /usr/bin/pip 如何利用pip将python模块安装到指定python版本中 问题 如电脑同时装了python2(2.7)python3...(3.7),当使用pip安装时默认应安装到python2中,pip3安装时应安装到python3中,但奇怪使用pip安装时每次都定位到python3中,不知啥原因,也不知如何将其重定向到python2

59100

python virtualenv

什么 virtualenv 在开发Python程序过程中,若有两个项目都依赖同一个第三方模块,但是依赖版本不同这个时候就无法保证两个项目都能够正常运行~,virtualenv 正是用于解决这类问题...virtualenv 用于创建一个独立Python运行环境,里面有独立python解释器python库,即 这个Python运行环境与外部隔离,会独自管理其安装模块。...*/site-packages,安装python库存放在这个目录下。...python环境中,可以使用如下参数: virtualenv --system-site-packages hello_venv 注意:当前使用 Mac环境,Mac自带了 Python2.7,个人又使用...版本,使用 --system-site-packages 参数,被带入模块目录python3对应site-packages目录,这里 /usr/local/lib/python3.7/site-packages

70910

学会这个,再也不怕Python环境安装 (CentOS 6 Python2.7 & Python3.7

为什么举例来说这个安装过程呢, 因为现在开发部署主流linux就是CentOS,而大部分人目前所使用版本是CentOS Linux release 7.x 该系统已经自带集成了 Python2.7版本及...你问我为什么不直接上Python3.7+,不为什么,就是想搞事情(因为公司项目不支持python3,且必须python2.7以上,后续升级3.7)话不多说,看下面命令: # step 1 cd /opt.../python2.7,所有我效果如图 这个地方需要我解释吗?...,我挑了个遇到问题最多来说,上文中已经共存了Python2.6Python2.7两个版本,那在这基础再添加其他Python版本也是同样操作再来一遍,依次重复操作。...唯一有变化就是包下载不同。 那么如果你有疑问可以在底部留言评论,我会一一解答,顺便也回忆一下我在这个过程中忘记了事。

1.7K30

Python 小组学习 Week1-Task1

但自 2020 年起,将停止对 Python2.7 支持,使用 Python3.x 版本是必须。 面临两个问题,同时保留两个版本,还是只留有一个。...作为初入者,电脑中并没有什么 Python 项目,所以无所谓了,经过折腾,发现现在电脑有 3.7、3.6、2.7 三个版本,捂脸了,也不知道他们三个会不会打架,暂时用着没问题。...在我初次启动过程中,选择了Python 版本,Python3.7 Python2.7。 选择了3.7启动后,后面每次打开就直接默认进去了。...,混装了两个,所以出现了多个 python不同位置情况。...03标题下截图中解释器路径: .conda/envs/JsonDecode/bin/python 这个具体项目下解释器,不具有通用型。

50120
领券