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绑定方法与非绑定方法详解
Aug 18 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
python实现弹跳小球
May 13 Python
Python 3.8新特征之asyncio REPL
May 28 Python
PyQT实现菜单中的复制,全选和清空的功能的方法
Jun 17 Python
Python绘制二维曲线的日常应用详解
Dec 04 Python
Python操作Excel工作簿的示例代码(\*.xlsx)
Mar 23 Python
PyQt5+Pycharm安装和配置图文教程详解
Mar 24 Python
pandas中的ExcelWriter和ExcelFile的实现方法
Apr 24 Python
利用python下载scihub成文献为PDF操作
Jul 09 Python
基于Python的身份证验证识别和数据处理详解
Nov 14 Python
python自动从arxiv下载paper的示例代码
Dec 05 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原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
2012/09/04 PHP
基于jquery的让页面控件不可用的实现代码
2010/04/27 Javascript
jquery连缀语法如何实现
2012/11/29 Javascript
下拉列表选择项的选中在不同浏览器中的兼容性问题探讨
2013/09/18 Javascript
js日期联动示例
2014/05/02 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
javascript加减乘除的简单实例
2016/07/12 Javascript
原生JS实现-星级评分系统的简单实例
2016/08/21 Javascript
Javascript中的神器——Promise
2017/02/08 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
Javascript原生ajax请求代码实例
2020/02/20 Javascript
vue 动态添加class,三个以上的条件做判断方式
2020/11/02 Javascript
python实现根据主机名字获得所有ip地址的方法
2015/06/28 Python
Python3解决棋盘覆盖问题的方法示例
2017/12/07 Python
Python实现备份MySQL数据库的方法示例
2018/01/11 Python
Python实现字符串的逆序 C++字符串逆序算法
2020/05/28 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Python 如何提高元组的可读性
2019/08/26 Python
python查看矩阵的行列号以及维数方式
2020/05/22 Python
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
银行职员个人的工作自我评价
2014/02/15 职场文书
yy婚礼主持词
2014/03/14 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
2014年网管工作总结
2014/12/11 职场文书
家属慰问信
2015/02/14 职场文书
表扬信格式模板
2015/05/05 职场文书
开学第一周总结
2015/07/16 职场文书
幼儿园教师培训心得体会
2016/01/21 职场文书
七年级语文教学反思
2016/03/03 职场文书
导游词之凤凰古城
2019/10/22 职场文书
Python pandas求方差和标准差的方法实例
2021/08/04 Python