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进程管理工具supervisor使用实例
Sep 17 Python
Python itertools模块详解
May 09 Python
python处理html转义字符的方法详解
Jul 01 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
对python3 中方法各种参数和返回值详解
Dec 15 Python
Python3.6.2调用ffmpeg的方法
Jan 10 Python
Python正则表达式匹配和提取IP地址
Jun 06 Python
使用python os模块复制文件到指定文件夹的方法
Aug 22 Python
python定位xpath 节点位置的方法
Aug 27 Python
快速了解Python开发环境Spyder
Jun 29 Python
Visual Studio code 配置Python开发环境
Sep 11 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 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
Discuz板块横排显示图片的实现方法
2007/05/28 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
php生成不重复随机数、数组的4种方法分享
2015/03/30 PHP
List the UTC Time on a Computer
2007/06/11 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
jQuery 获取对象 根据属性、内容匹配, 还有表单元素匹配
2010/05/31 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
nodejs教程之入门
2014/11/21 NodeJs
javascript实现类似百度分享功能的方法
2015/07/27 Javascript
基于javascript代码实现通过点击图片显示原图片
2015/11/29 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
Bootstrap基本组件学习笔记之进度条(15)
2016/12/08 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
jquery实现一个全局计时器(商城可用)
2017/06/30 jQuery
解决vue中修改export default中脚本报一大堆错的问题
2018/08/27 Javascript
node错误处理与日志记录的实现
2018/12/24 Javascript
javascript实现简易数码时钟
2020/03/30 Javascript
关于Django外键赋值问题详解
2017/08/13 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
Python 实现遥感影像波段组合的示例代码
2019/08/04 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
Selenium基于PIL实现拼接滚动截图
2020/04/10 Python
pip安装提示Twisted错误问题(Python3.6.4安装Twisted错误)
2020/05/09 Python
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
好邻里事迹材料
2014/01/16 职场文书
商场主管竞聘书
2014/03/31 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
2014年党务公开方案
2014/05/08 职场文书
2014年教师节活动总结
2014/08/29 职场文书
迎七一演讲稿
2014/09/12 职场文书
村党建工作汇报材料
2014/11/02 职场文书
个人专业技术总结
2015/03/05 职场文书
春节晚会开场白
2015/05/29 职场文书
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL