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 相关文章推荐
Python2.x中文乱码问题解决方法
Jun 02 Python
Python的多态性实例分析
Jul 07 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
Python 列表(List) 的三种遍历方法实例 详解
Apr 15 Python
Python实现求笛卡尔乘积的方法
Sep 16 Python
使用pycharm设置控制台不换行的操作方法
Jan 19 Python
详解django中url路由配置及渲染方式
Feb 25 Python
python网络编程socket实现服务端、客户端操作详解
Mar 24 Python
完美解决keras 读取多个hdf5文件进行训练的问题
Jul 01 Python
在django中实现choices字段获取对应字段值
Jul 12 Python
Python文件夹批处理操作代码实例
Jul 21 Python
python读取并查看npz/npy文件数据以及数据显示方法
Apr 14 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遍历文件目录与清除目录中文件的实现详解
2013/06/24 PHP
PHP实现微信提现功能
2018/09/30 PHP
javascript Zifa FormValid 0.1表单验证 代码打包下载
2007/06/08 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
JavaScript中的匀速运动和变速(缓冲)运动详细介绍
2012/11/11 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
2015/03/02 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
2017/01/19 Javascript
[js高手之路]原型式继承与寄生式继承详解
2017/08/28 Javascript
解决vue项目nginx部署到非根目录下刷新空白的问题
2018/09/27 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
vue路由中前进后退的一些事儿
2019/05/18 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
Python 专题二 条件语句和循环语句的基础知识
2017/03/19 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
Python实现的本地文件搜索功能示例【测试可用】
2018/05/30 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Python+Redis实现布隆过滤器
2019/12/08 Python
django框架中间件原理与用法详解
2019/12/10 Python
python django中8000端口被占用的解决
2019/12/17 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
英国Iceland杂货店:网上食品购物
2020/12/16 全球购物
信息技术培训感言
2014/03/06 职场文书
财务部副经理岗位职责
2014/03/14 职场文书
听课评语大全
2014/04/30 职场文书
家庭贫困证明范本(经典版)
2014/09/22 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
元宵节晚会主持词
2015/07/01 职场文书
2016新年问候语大全
2015/11/11 职场文书
2015年教师党员个人总结
2015/11/24 职场文书
《西门豹》教学反思
2016/02/23 职场文书