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 正则式 概述及常用字符
May 07 Python
Python入门篇之列表和元组
Oct 17 Python
python文件操作整理汇总
Oct 21 Python
Python自动发邮件脚本
Mar 31 Python
scrapy爬虫实例分享
Dec 28 Python
python求最大值最小值方法总结
Jun 25 Python
Python爬虫 bilibili视频弹幕提取过程详解
Jul 31 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
python如何将图片转换素描画
Sep 08 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
python 如何做一个识别率百分百的OCR
May 29 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常用Output和ptions/Info函数集介绍
2013/06/19 PHP
php防注入及开发安全详细解析
2013/08/09 PHP
改写ThinkPHP的U方法使其路由下分页正常
2014/07/02 PHP
PHP在线打包下载功能示例
2016/10/15 PHP
用 JSON 处理缓存
2007/04/27 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
JS+JSP checkBox 全选具体实现
2014/01/02 Javascript
教你如何使用node.js制作代理服务器
2014/11/26 Javascript
详解JS函数重载
2014/12/04 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
2016/02/29 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
基于jQuery的AJAX和JSON实现纯html数据模板
2016/08/09 Javascript
jquery实现转盘抽奖功能
2017/01/06 Javascript
详解Vue生命周期的示例
2017/03/10 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
详解angular2.x创建项目入门指令
2018/10/11 Javascript
三剑客:offset、client和scroll还傻傻分不清?
2020/12/04 Javascript
[36:09]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.24
2019/09/10 DOTA
Python中Collections模块的Counter容器类使用教程
2016/05/31 Python
python中协程实现TCP连接的实例分析
2018/10/14 Python
在Python中获取操作系统的进程信息
2019/08/27 Python
tensorflow实现将ckpt转pb文件的方法
2020/04/22 Python
Python urllib2运行过程原理解析
2020/06/04 Python
python实现经典排序算法的示例代码
2021/02/07 Python
python实现计算图形面积
2021/02/22 Python
EJB3.1都有哪些改进
2012/11/17 面试题
会计实习自我鉴定
2013/12/04 职场文书
小学三八妇女节活动方案
2014/03/16 职场文书
2014全国两会心得体会
2014/03/17 职场文书
可口可乐广告词
2014/03/20 职场文书
科技工作者先进事迹
2014/08/16 职场文书
青年教师师德演讲稿
2014/08/26 职场文书
学校党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2016年中学清明节活动总结
2016/04/01 职场文书
volatile保证可见性及重排序方法
2022/08/05 Java/Android
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js