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判断、获取一张图片主色调的2个实例
Apr 10 Python
以911新闻为例演示Python实现数据可视化的教程
Apr 23 Python
Python中的choice()方法使用详解
May 15 Python
python 对类的成员函数开启线程的方法
Jan 22 Python
Python3.6.x中内置函数总结及讲解
Feb 22 Python
python3编写ThinkPHP命令执行Getshell的方法
Feb 26 Python
利用pyuic5将ui文件转换为py文件的方法
Jun 19 Python
python调试神器PySnooper的使用
Jul 03 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
python实现四人制扑克牌游戏
Apr 22 Python
利用Python批量识别电子账单数据的方法
Feb 08 Python
忆童年!用Python实现愤怒的小鸟游戏
Jun 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
让PHP显示Facebook的粉丝数量方法
2014/01/08 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
兼容IE和FF的js脚本代码小结(比较常用)
2010/12/06 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
详解Vue2.0之去掉组件click事件的native修饰
2017/04/20 Javascript
Vue.js实现价格计算器功能
2020/03/30 Javascript
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
React Component存在的几种形式详解
2018/11/06 Javascript
JavaScript实现的级联算法示例【省市二级联动功能】
2018/12/25 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
[02:09]EHOME夺得首届辉夜杯冠军—现场颁奖仪式
2015/12/28 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
在Django框架中编写Contact表单的教程
2015/07/17 Python
css3过渡_动力节点Java学院整理
2017/07/11 HTML / CSS
HTML5 video循环播放多个视频的方法步骤
2020/08/06 HTML / CSS
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
应用电子专业学生的自我评价
2013/10/16 职场文书
建筑工程专业毕业生自荐信
2013/10/19 职场文书
网上签名寄语活动留言
2014/01/18 职场文书
保安部任务及岗位职责
2014/02/25 职场文书
中学校庆方案
2014/03/17 职场文书
读书伴我成长演讲稿
2014/05/07 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
2015年汽车销售经理工作总结
2015/04/27 职场文书
2019最新版火锅店的创业计划书 !
2019/07/12 职场文书
初中教务主任竞聘演讲稿(范文)
2019/08/20 职场文书
MySQL Threads_running飙升与慢查询的相关问题解决
2021/05/08 MySQL
苹果发布了MagSafe固件更新,可以不外接电源实现最高7.5W充电
2022/04/21 数码科技