当前位置: 首页 > 编程笔记 >

python itsdangerous模块的具体使用方法

申思远
2023-03-14
本文向大家介绍python itsdangerous模块的具体使用方法,包括了python itsdangerous模块的具体使用方法的使用技巧和注意事项,需要的朋友参考一下

itsdangerous 简介

有时您只想将一些数据发送到不受信任的环境。但是如何安全地做到这一点?诀窍就是签名。只要知道一个密钥,您就可以对数据进行加密签名并将其移交给其他人。当您取回数据时,可以轻松确保没有人篡改数据。使用itsdangerous可以实现此种方案。

安装

pip install itsdangerous

使用实例一

import itsdangerous

salt="sdaf"#加盐
t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#过期时间600秒

info = {'username':'baihe','user_id':1}

# =========加密token============
res=t.dumps(info)
token=res.decode()#指定编码格式
print(token)
# eyJleHAiOjE1NzUwMDczNjgsImlhdCI6MTU3NTAwNjc2OCwiYWxnIjoiSFM1MTIifQ.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InlhbmdmYW4ifQ.yUb3PW53V89ZX4Ci2qeaBJIiizt0JUAN_W9BBzg8QkIR1-uO7NQl6jizSUReOFGanWzfG19t7XFHCWv1JGMIZw


# =========解密token============

res = t.loads('eyJhbGciOiJIUzUxMiIsImV4cCI6MTU3NTAwNzM0MywiaWF0IjoxNTc1MDA2NzQzfQ.eyJ1c2VyX2lkIjoxLCJ1c2VybmFtZSI6InlhbmdmYW4ifQ.k-Q1VyN2TOlQ4flHHoiOYEMRaUEiN5Ms2JgeRdnCZWbQB-WwQ1FScoBWxFGkCYEPoWVpAjQxDBQeBesmulZupQ')
# res = t.loads(token)
print(res)
# {'username': 'baihe', 'user_id': 1}


# 当超时或值有误则会报错

使用实例二

import itsdangerous

salt="sdaf"#加盐
t=itsdangerous.TimedJSONWebSignatureSerializer(salt,expires_in=600)#过期时间600秒

info = {'username':'baihe','user_id':1}

# =========加密token============
res=t.dumps(info)
token=res.decode()#指定编码格式
print(token)
# eyJhbGciOiJIUzUxMiIsImlhdCI6MTU0MTgxOTcyMCwiZXhwIjoxNTQxODIwMzIwfQ.eyJ1c2VybmFtZSI6InlhbmdmYW4iLCJ1c2VyX2lkIjoxfQ.VjCgry9Sr-4iRsK_MHYThcn_O7js9BERrXzocc7BI1aavC3N3s3e0wWMsvq2-Qp-ol_WNMD23wxiYRrA1kwCbg

# =========解密token============

res = t.loads(token)
print(res)
# {'username': 'baihe', 'user_id': 1}


# 当超时或值有误则会报错

使用实例三

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer

salt="abcdefg" # 这里就是配置加密的规则
serializer=Serializer(salt,expires_in=3600) # 过期时间一小时,
info = {'confirm':1}
# 加密阶段
res=serializer.dumps(info)# 得到加密后的数据,会返回一个字节类型的数据
token=res.decode() # 解码为str
print(token)
# 得到的数据如下,就是包含数据和盐值的token了,只有在知道盐值的时候才能被解密出来
#eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2MjY0Nzg4NCwiZXhwIjoxNTYyNjUxNDg0fQ.eyJjb25maXJtIjo1fQ.93DtXu9vHQDW0lr7saJhDBt-dcBxNNh_IMTR-JhWnrT-ujQ9SwevSUyW0p2txLS-gtyRHPlH1eD9INksIWilkA

# 解密阶段
res=serializer.loads(token)
print(res)
# 返回的数据如下:
# {'confirm':1}

特殊说明

诚然,接收者可以破译内容,来看看你的包裹里有什么,但他们没办法修改你的内容,除非他们也有你的密钥。所以只要你保管好你的密钥,并且密钥足够复杂,一切就OK了。

itsdangerous内部默认使用了HMAC和SHA1来签名,基于 Django 签名模块。它也支持JSON Web 签名 (JWS)。这个库采用BSD协议,由Armin Ronacher编写,而大部分设计与实现的版权归Simon Willison和其他的把这个库变为现实的Django爱好者们。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 本文向大家介绍numpy linalg模块的具体使用方法,包括了numpy linalg模块的具体使用方法的使用技巧和注意事项,需要的朋友参考一下 最近在看机器学习的 LogisticRegressor,BayesianLogisticRegressor算法,里面得到一阶导数矩阵g和二阶导数Hessian矩阵H的时候,用到了这个模块进行求解运算,记录一下。 numpy.linalg模块包含线性代数

  • 本文向大家介绍python中wx模块的具体使用方法,包括了python中wx模块的具体使用方法的使用技巧和注意事项,需要的朋友参考一下 wx包中的方法都是以大写字母开头的,而这和Python的习惯是相反的。 本节介绍如何创建python程序的图形用户界面(GUI),也就是那些带有按钮和文本框的窗口。这里介绍wxPython : 下载地址:http://www.wxpython.org/downlo

  • 本文向大家介绍angular.extend方法的具体使用,包括了angular.extend方法的具体使用的使用技巧和注意事项,需要的朋友参考一下 AngularJs的angular.extend()方法可以把一个或多个对象中的方法和属性扩展到一个目的对象中,使得这个对象拥有其他对象相同的方法和属性,如下图所示。 angular.extends()方法的第一个参数是要被扩展的对象,后面可以传入一个

  • 问题内容: 是否可以使用EaskMock模拟具体的类?如果是这样,我该怎么办? 问题答案: 请参阅EasyMock类扩展文档,并从SourceForge项目下载它。但是,您不能模拟最终方法。 编辑:如注释中所述,这是EasyMock v3及更高版本的一部分。

  • 本文向大家介绍浅谈ES6 模板字符串的具体使用方法,包括了浅谈ES6 模板字符串的具体使用方法的使用技巧和注意事项,需要的朋友参考一下 写在前面 关于 ES6, 也终于在 2015 年的 7 月 18 号尘埃落定了。虽然说各大浏览器还没有全面的支持,不过这并不妨碍我们一颗想要撸一把的心。在后端,可以使用 Node.js(0.12+)或 io.js, 前端的话,也可以使用Babel 或Traceur

  • 本文向大家介绍ReactNative之FlatList的具体使用方法,包括了ReactNative之FlatList的具体使用方法的使用技巧和注意事项,需要的朋友参考一下 之前使用的组件是ListView,当时要添加一个下拉刷新,上拉加载的功能,所以对ListView做了一些封装,但是后来看官方文档,不建议再使用ListView,因为效率问题,做过Android的朋友都知道,Android的Lis