python itsdangerous模块的具体使用方法


Posted in Python onFebruary 17, 2020

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爱好者们。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
python设计模式大全
Jun 27 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
利用python画一颗心的方法示例
Jan 31 Python
Python创建二维数组实例(关于list的一个小坑)
Nov 07 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 Python
Pandas之read_csv()读取文件跳过报错行的解决
Apr 21 Python
IDLE下Python文件编辑和运行操作
Apr 25 Python
Python如何安装第三方模块
May 28 Python
django haystack实现全文检索的示例代码
Jun 24 Python
sublime3之内网安装python插件Anaconda的流程
Nov 10 Python
Python3爬虫RedisDump的安装步骤
Feb 20 Python
django-crontab实现服务端的定时任务的示例代码
Feb 17 #Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 #Python
Django 项目通过加载不同env文件来区分不同环境
Feb 17 #Python
Python cookie的保存与读取、SSL讲解
Feb 17 #Python
Python中用pyinstaller打包时的图标问题及解决方法
Feb 17 #Python
Python交互环境下打印和输入函数的实例内容
Feb 16 #Python
Python爬取新型冠状病毒“谣言”新闻进行数据分析
Feb 16 #Python
You might like
特详细的PHPMYADMIN简明安装教程
2008/08/01 PHP
Android App中DrawerLayout抽屉效果的菜单编写实例
2016/03/21 PHP
Thinkphp微信公众号支付接口
2016/08/04 PHP
php中钩子(hook)的原理与简单应用demo示例
2019/09/03 PHP
css值转换成数值请抛弃parseInt
2011/10/24 Javascript
javascript for循环从入门到偏门(效率优化+奇特用法)
2012/08/01 Javascript
Jquery刷新页面背景图片随机变换的实现方法
2013/03/15 Javascript
使用js+jquery实现无限极联动
2013/05/23 Javascript
js动画效果制件让图片组成动画代码分享
2014/01/14 Javascript
纯JS实现根据CSS的class选择DOM
2014/03/22 Javascript
js打开windows上的可执行文件示例
2014/05/27 Javascript
jquery事件的ready()方法使用详解
2015/11/11 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
Angular 根据 service 的状态更新 directive
2016/04/03 Javascript
AngularJS中比较两个数组是否相同
2016/08/24 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
2017/04/13 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
讲解vue-router之什么是嵌套路由
2018/05/28 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
[01:38]完美世界DOTA2联赛PWL S3 集锦第四期
2020/12/21 DOTA
[05:59]带你看看DPC的台前幕后
2021/03/11 DOTA
Python的for和break循环结构中使用else语句的技巧
2016/05/24 Python
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
自定义django admin model表单提交的例子
2019/08/23 Python
Python 3.6打包成EXE可执行程序的实现
2019/10/18 Python
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
捷克家居装饰及图书音像购物网站:Velký košík
2018/04/16 全球购物
小学生演讲稿大全
2014/04/25 职场文书
老公给老婆的保证书
2014/04/28 职场文书
一帮一活动总结
2014/05/08 职场文书
外贸英文求职信范文
2015/03/19 职场文书
《黄山奇石》教学反思
2016/02/18 职场文书
2019安全宣传标语大全
2019/08/14 职场文书