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 调用Java实例详解
Jun 02 Python
Django实现学生管理系统
Feb 26 Python
Flask框架单例模式实现方法详解
Jul 31 Python
pandas按行按列遍历Dataframe的几种方式
Oct 23 Python
Python笔记之代理模式
Nov 20 Python
创建Shapefile文件并写入数据的例子
Nov 26 Python
Python实现结构体代码实例
Feb 10 Python
Python定时器线程池原理详解
Feb 26 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
Feb 28 Python
Python爬虫实现百度翻译功能过程详解
May 29 Python
Python3交互式shell ipython3安装及使用详解
Jul 11 Python
pytorch实现手写数字图片识别
May 20 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数据类型转换
2014/01/09 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
php文件缓存方法总结
2016/03/16 PHP
深入解析Laravel5.5中的包自动发现Package Auto Discovery
2017/09/13 PHP
PHP PDOStatement::setAttribute讲解
2019/02/01 PHP
javascript编程起步(第五课)
2007/02/27 Javascript
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件体系结构
2015/11/19 Javascript
JavaScript中的return语句简单介绍
2015/12/07 Javascript
JS从数组中随机取出几个数组元素的方法
2016/08/02 Javascript
详解JavaScript RegExp对象
2017/02/04 Javascript
vue-router+vuex addRoutes实现路由动态加载及菜单动态加载
2017/09/28 Javascript
Vue实现腾讯云点播视频上传功能的实现代码
2020/08/17 Javascript
[02:45]DOTA2英雄敌法师基础教程
2013/11/25 DOTA
[44:26]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第二局
2016/03/03 DOTA
Python使用面向对象方式创建线程实现12306售票系统
2015/12/24 Python
python自动截取需要区域,进行图像识别的方法
2018/05/17 Python
值得收藏的10道python 面试题
2019/04/15 Python
python安装gdal的两种方法
2019/10/29 Python
Python是怎样处理json模块的
2020/07/16 Python
Python过滤序列元素的方法
2020/07/31 Python
pyspark对Mysql数据库进行读写的实现
2020/12/30 Python
在购买印度民族服饰:Soch
2020/09/15 全球购物
仓库主管岗位职责
2014/03/02 职场文书
大学生求职信范文
2014/05/24 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
保密法制宣传月活动总结
2015/05/07 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
Vue-Element-Admin集成自己的接口实现登录跳转
2021/06/23 Vue.js
oracle重置序列从0开始递增1
2022/02/28 Oracle
Go调用Rust方法及外部函数接口前置
2022/06/14 Golang
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS