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异步回调机制实现和使用方法
Nov 26 Python
使用Python读写及压缩和解压缩文件的示例
Jul 08 Python
Python 装饰器使用详解
Jul 29 Python
python爬取亚马逊书籍信息代码分享
Dec 09 Python
python实现ID3决策树算法
Aug 29 Python
python实现在图片上画特定大小角度矩形框
Oct 24 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
pytorch的batch normalize使用详解
Jan 15 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
Jun 04 Python
python如何编写win程序
Jun 08 Python
用python进行视频剪辑
Nov 02 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代码包装修正版
2008/03/15 PHP
PHP防止跨域提交表单
2013/11/01 PHP
纯PHP代码实现支付宝批量付款
2015/12/24 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
Ubuntu 16.04下安装PHP 7过程详解
2017/03/28 PHP
Mootools 1.2教程(2) DOM选择器
2009/09/14 Javascript
angular中使用路由和$location切换视图
2015/01/23 Javascript
返回函数的JavaScript函数
2016/06/14 Javascript
js数组去重的hash方法
2016/12/22 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
Vue.js基础指令实例讲解(各种数据绑定、表单渲染大总结)
2017/07/03 Javascript
jQuery绑定事件方法及区别(bind,click,on,live,one)
2017/08/14 jQuery
js实现音乐播放控制条
2017/09/09 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
详解React中合并单元格的正确写法
2019/01/08 Javascript
详解小程序设置缓存并且不覆盖原有数据
2019/04/15 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
常见的浏览器存储方式(cookie、localStorage、sessionStorage)
2019/05/07 Javascript
JavaScript中如何对多维数组(矩阵)去重的实现
2019/12/04 Javascript
解决Vue的文本编辑器 vue-quill-editor 小图标样式排布错乱问题
2020/08/03 Javascript
Python实现的求解最大公约数算法示例
2018/05/03 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
windows安装TensorFlow和Keras遇到的问题及其解决方法
2019/07/10 Python
Python基于Opencv来快速实现人脸识别过程详解(完整版)
2019/07/11 Python
Python ATM功能实现代码实例
2020/03/19 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
Python第三方库安装缓慢的解决方法
2021/02/06 Python
匈牙利墨盒和碳粉购买网站:CDRmarket
2018/04/14 全球购物
普通大学毕业生自荐信范文
2014/02/23 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
党员民主评议个人总结
2014/10/20 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
小学生差生评语
2014/12/29 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python
Python字典的基础操作
2021/11/01 Python