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 04 Python
python实现上传下载文件功能
Nov 19 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
Matplotlib中文乱码的3种解决方案
Nov 15 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
python os.path.isfile 的使用误区详解
Nov 29 Python
python模拟预测一下新型冠状病毒肺炎的数据
Feb 01 Python
Pandas时间序列:时期(period)及其算术运算详解
Feb 25 Python
Python利用PyPDF2库获取PDF文件总页码实例
Apr 03 Python
Python任务调度模块APScheduler使用
Apr 15 Python
Python脚本破解压缩文件口令实例教程(zipfile)
Jun 14 Python
pd.drop_duplicates删除重复行的方法实现
Jun 16 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手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
PHP 错误处理机制
2015/07/06 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
老生常谈PHP中的数据结构:DS扩展
2017/07/17 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
2019/08/03 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
5 cool javascript apps
2007/03/24 Javascript
js form 验证函数 当前比较流行的错误提示
2009/06/23 Javascript
jquery选择器(常用选择器说明)
2010/09/28 Javascript
javascript小数四舍五入多种方法实现
2012/12/23 Javascript
九种js弹出对话框的方法总结
2013/03/12 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
多个jQuery版本共存的处理方案
2015/03/17 Javascript
详解javascript函数的参数
2015/11/10 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
将angular.js项目整合到.net mvc中的方法详解
2017/06/29 Javascript
浅析Vue.js 中的条件渲染指令
2018/11/19 Javascript
JavaScript数据结构与算法之二叉树添加/删除节点操作示例
2019/03/01 Javascript
JS实现简单的文字无缝上下滚动功能示例
2019/06/22 Javascript
vuex根据不同的用户权限展示不同的路由列表功能
2019/09/20 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
python用来获得图片exif信息的库实例分析
2015/03/16 Python
python matplotlib画图实例代码分享
2017/12/27 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
Python3 读、写Excel文件的操作方法
2018/10/20 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
2020/05/20 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
仓库管理员岗位职责
2014/03/19 职场文书
学校欢迎标语
2014/06/18 职场文书
工作业绩不及格检讨书
2014/10/28 职场文书
大学生入党自荐书
2015/03/05 职场文书
入党宣誓大会后的感想
2015/08/10 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
CentOS7 minimal 最小化安装网络设置过程
2022/12/24 Servers