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备份Mysql脚本
Aug 11 Python
Python struct模块解析
Jun 12 Python
Python实现学校管理系统
Jan 11 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
Mar 14 Python
对python .txt文件读取及数据处理方法总结
Apr 23 Python
Python获取昨天、今天、明天开始、结束时间戳的方法
Jun 01 Python
Pytorch反向求导更新网络参数的方法
Aug 17 Python
100行Python代码实现每天不同时间段定时给女友发消息
Sep 27 Python
python输出数学符号实例
May 11 Python
Python如何实现大型数组运算(使用NumPy)
Jul 24 Python
如何基于python把文字图片写入word文档
Jul 31 Python
Django Form常用功能及代码示例
Oct 13 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对象转换为数组函数(递归方法)
2012/02/04 PHP
file_get_contents获取不到网页内容的解决方法
2013/03/07 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
[原创]php简单防盗链验证实现方法
2016/07/09 PHP
PHP自定义多进制的方法
2016/11/03 PHP
document.getElementBy("id")与$("#id")有什么区别
2013/09/22 Javascript
EasyUI布局 高度自适应
2016/06/04 Javascript
【经典源码收藏】基于jQuery的项目常见函数封装集合
2016/06/07 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
jquery获取input type=text中的值的各种方式(总结)
2016/12/02 Javascript
mui js控制开关状态、修改switch开关的值方法
2019/09/03 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
[54:58]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第一场 11.25
2020/11/25 DOTA
线程和进程的区别及Python代码实例
2015/02/04 Python
numpy.linspace函数具体使用详解
2019/05/27 Python
tornado+celery的简单使用详解
2019/12/21 Python
python中的itertools的使用详解
2020/01/13 Python
Python 生成VOC格式的标签实例
2020/03/10 Python
Stefania Mode美国:奢华设计师和时尚服装
2018/01/07 全球购物
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
JSF界面控制层技术
2013/06/17 面试题
大学生求职自我评价
2014/01/16 职场文书
吨的认识教学反思
2014/04/27 职场文书
个人安全承诺书
2014/05/22 职场文书
村委会贫困证明范文
2014/09/21 职场文书
西游降魔篇观后感
2015/06/15 职场文书
医院见习总结
2015/06/24 职场文书
培训计划通知
2015/07/15 职场文书
2015年初中教师个人工作总结
2015/07/21 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
2019公司管理制度
2019/04/19 职场文书
python获取淘宝服务器时间的代码示例
2021/04/22 Python
关于vue-router-link选择样式设置
2022/04/30 Vue.js
Zabbix6通过ODBC方式监控Oracle 19C的详细过程
2022/09/23 Servers