首页
学习
活动
专区
工具
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 以下再介绍一些包管理常用的命令

48320

环境搭建

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.4K21

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

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

    2.1K50

    Python3.7.3安装(Ubuntu16.04)

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

    1.2K40

    OpenCV 关于版本的一些说明

    .X 2.7 - 3.6 3.4.2.X - 3.4.7.28 2.7 - 3.7 3.4.8.29 - 3.4.9.31 2.7 - 3.8 3.4.9.33 - 3.4.11.43 3.5 -...4.0.0.21 - 4.1.1.26 2.7 - 3.7 4.1.2.30 - 4.2.0.34 2.7 - 3.8 4.3.0.36 - 4.4.0.42 3.5 - 3.8 4.4.0.44...package):官方版本 + 第三方附加开源库 官方版本 - GUI相关内容(server 版本,不带 Qt 相关内容) 完整版本 - GUI相关内容(server 版本,不带 Qt 相关内容) 注意:不要在同一环境中安装多个不同的软件包...,按需安装某一个 opencv python 包就可以了 NonFree OpenCV 是一个开源图像处理库,其中部分库由于种种原因不再免费开源,OpenCV 便将这部分内容放到 NonFree 的部分...特征最开始是可以使用的 (3.4.10 之前),之后有很长一段时间 OpenCV 是不能直接用的(4.2.x 之前) 12 # 这个时期的用法cv2.xfeatures2D.SIFT_create ()

    43510

    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)) 代码注释原则: 不用全部加注释,只需要在自己觉得重要或不好理解的部分加注释即可

    51120

    我用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.7和3.6的第二个修复,抱歉!...而且,Python 2.7没有单元测试,因为它很难backport。 至少,Python 2.7和3.6获得了我的第一个PyGILState_Ensure()修复。...我推出了第一个修复程序,但在macOS上发现了一个新的不同的竞态条件。 我不得不深入研究Python GIL的历史(1992年)。 幸运的是,Guido van Rossum也能够阐述其基本原理。

    2.4K100

    解决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.8K30

    python虚拟环境管理之virtual

    虚拟环境的作用 使python环境拥有独立的包,避免污染原本的python环境。为不同的项目创建不同的环境可以避免安装的库过于庞大和相互干扰。...例如你想在同一台机器上开发用python2和python3写的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 是一个开源的软件包管理系统和环境管理系统

    1.1K20

    小白入门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基础教程:虚拟环境

    有时候也会用到某个包和模块的特定版本,可能是这个特定的版本修复了某个bug,或者是依赖的接口只有该版本有。也可能系统安装了Python 3.6,但应用程序要求3.7或Python 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.04上Python2使用virtualenvwrapper创建Python 3的虚拟环境 Ubuntu 16.04系统默认的Python还是2,要在这个系统上使用Python 3.6...(1)Ubuntu 16.04上安装Python 3.6,3.7和3.8 可以通过PPA源安装,也可以从源码编译安装为了方便(安装和以后更新),我们选择PPA: sudo add-apt-repository

    81630

    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

    59410

    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.x和pip3的软连接.../pip3  /usr/bin/pip 如何利用pip将python模块安装到指定的python版本中 问题 如电脑上同时装了python2(2.7)和python3...(3.7),当使用pip安装时默认应安装到python2中,pip3安装时应安装到python3中,但奇怪的是使用pip安装时每次都定位到python3中,不知是啥原因,也不知如何将其重定向到python2

    66000

    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

    74510

    学会这个,再也不怕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.6和Python2.7两个版本,那在这基础上再添加其他的Python版本也是同样的操作再来一遍,依次重复操作。...唯一有变化的就是包下载的不同。 那么如果你有疑问可以在底部留言评论,我会一一解答,顺便也回忆一下我在这个过程中忘记了的事。

    1.8K30

    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 是这个具体项目下的解释器,不具有通用型。

    51820
    领券