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 相关文章推荐
R vs. Python 数据分析中谁与争锋?
Oct 18 Python
Django admin美化插件suit使用示例
Dec 12 Python
人生苦短我用python python如何快速入门?
Mar 12 Python
分析python请求数据
Aug 19 Python
Django框架中序列化和反序列化的例子
Aug 06 Python
对pytorch中的梯度更新方法详解
Aug 20 Python
Python @property装饰器原理解析
Jan 22 Python
Python flask框架如何显示图像到web页面
Jun 03 Python
Django日志及中间件模块应用案例
Sep 10 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 07 Python
Python+uiautomator2实现自动刷抖音视频功能
Apr 29 Python
python opencv将多个图放在一个窗口的实例详解
Feb 28 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
PHP中读写文件实现代码
2011/10/20 PHP
php用正则表达式匹配URL的简单方法
2013/11/12 PHP
PHP发送短信代码分享
2015/08/11 PHP
php使用curl通过代理获取数据的实现方法
2016/05/16 PHP
PHP提取字符串中的手机号正则表达式怎么写
2017/07/17 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
兼容ie和firefox js关闭代码
2008/12/11 Javascript
checkbox全选/取消全选以及checkbox遍历jQuery实现代码
2009/12/02 Javascript
jQuery中与toggleClass等价的程序段 以及未来学习的方向
2010/03/18 Javascript
js获取class的所有元素
2013/03/28 Javascript
replace()方法查找字符使用示例
2013/10/28 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
html5+javascript实现简单上传的注意细节
2016/04/18 Javascript
jQuery的ajax下载blob文件
2016/07/21 Javascript
详解VUE调用本地json的使用方法
2019/05/15 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
js瀑布流布局的实现
2020/06/28 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
使用pandas读取csv文件的指定列方法
2018/04/21 Python
Python爬虫图片懒加载技术 selenium和PhantomJS解析
2019/09/18 Python
python读取hdfs并返回dataframe教程
2020/06/05 Python
python如何导出微信公众号文章方法详解
2020/08/31 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
美国台面电器和厨具品牌:KitchenAid
2019/04/12 全球购物
希腊香水和化妆品购物网站:Parfimo.gr
2019/10/03 全球购物
编写用C语言实现的求n阶阶乘问题的递归算法
2014/10/21 面试题
公司领导推荐信
2013/11/12 职场文书
汽车技术服务英文求职信范文
2014/01/02 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
项目战略合作意向书
2015/05/08 职场文书
2015年小学校长工作总结
2015/05/19 职场文书
冰雪公主观后感
2015/06/16 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
Win11跳过联网界面创建本地管理账户的3种方法
2022/04/20 数码科技
讲解MySQL增删改操作
2022/05/06 MySQL