dj鲜生-16-这是危险的模块-isdangerous
小结,加密与解密
加密# 导入一个类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer# 获得一个加密器对象
# 加密器 = 类名(盐,过期时间)
obj = Serializer("yan", 3)# 对数据加密
data = {"msg":"我代表一个数据", "li":['我代表列表', ('我代表元组',)]}
mi = obj.dumps(data)
print('对复杂的类型都可以进行加密')
print(mi)解密# 创建另一个加密器对象,用于解密,使用相同的盐
obj2 = Serializer("yan")
print('收到的加密内容为:',mi)
# 对密文进行解密
yuanwen = obj2.loads(mi)
print('解密后的内容')
print(yuanwen)
不安全的传输方式
通过这样的方式进行数据传送,十分的不安全
如果用户发现了路径的规律,它可以自己手动的把19修改为其它数据
就会造成不好的后果
解决办法 isdangerous模块
ItsDangerous-ItsDangerous文档(1.1.x)
https://itsdangerous.readthedocs.io/en/1.1.x/
isDangerous文档 ! 很危险 ! - HH2030的博客 - CSDN博客
https://blog.csdn.net/HH2030/article/details/80964380
简言之:
这是一个可以给数据加密,同时可以给加密数据解密的一个模块
安装模块
pip install itsdangerous
使用小结
》获得加密器对象
加密器对象 = 模块名.类名(盐,过期时间秒数)
itsdangerous.TimedJSONWebSignatureSerializer(盐,秒数)
》加密
加密器对象.dumps(数据)
加密得到一段密文,是bytes数据类型
如果不喜欢,可以decode一下转变为str类型
》解密
加密器对象.loads(加密的数据)
解密需要接收bytes类型的数据
如果收到的密文是str类型,可以把它encode一下,转为bytes再进行解密
》时效性
如果加密的内容过期了
解密时会报错
可以根据解密时是否报错
判断这个密文的时效性
导入类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
这个是超长的一个单词! 但是却见名知义
得到加密器对象
# 导入一个类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer# 获得一个加密器对象
# 加密器 = 类名(盐,过期时间)
obj = Serializer("yan", 3)
print('Serializer 类对象')
print(obj)
利用加密器对象对数据进行加密
例子对一个复杂的数据进行加密
# 导入一个类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer# 获得一个加密器对象
# 加密器 = 类名(盐,过期时间)
obj = Serializer("yan", 3)# 对数据加密
data = {"msg":"我代表一个数据", "li":['我代表列表', ('我代表元组',)]}
mi = obj.dumps(data)
print('对复杂的类型都可以进行加密')
print(mi)
对数据进行解密
发送数据的时候,会对数据加密
接收方会拿到一个加密了的内容
作为接收方
需要解密,拿到内容原文
》解密练习源码
# 导入一个类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer# 获得一个加密器对象
# 加密器 = 类名(盐,过期时间)
obj = Serializer("yan", 3)# 对数据加密
data = {"msg":"我代表一个数据", "li":['我代表列表', ('我代表元组',)]}
mi = obj.dumps(data)# 创建另一个加密器对象,用于解密,使用相同的盐
obj2 = Serializer("yan")
print('收到的加密内容为:',mi)
# 对密文进行解密
yuanwen = obj2.loads(mi)
print('解密后的内容')
print(yuanwen)
时效性的测试
一个三秒钟的密码
四秒钟以后,再去解密
关注报错
关注类型
调试源码
# 导入一个类
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer# 获得一个加密器对象
# 加密器 = 类名(盐,过期时间)
obj = Serializer("yan", 3)# 对数据加密
data = {"msg":"我代表一个数据", "li":['我代表列表', ('我代表元组',)]}
mi = obj.dumps(data)
print('密文创建好了,内容是', mi)
print('密文只有三秒钟生命,四秒后破解密文试一试')
import time
time.sleep(4)
# 创建另一个加密器对象,用于解密,使用相同的盐
obj2 = Serializer("yan")
print('收到的加密内容为:')
print(mi)
# 对密文进行解密
yuanwen = obj2.loads(mi)
print('解密后的内容')
print(yuanwen)
报错
C:\ProgramData\Anaconda3\python.exe G:/dailyfresh/a0test/01testisdangerous.py
密文创建好了,内容是 b'eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2OTI0MjI4NiwiZXhwIjoxNTY5MjQyMjg5fQ.eyJtc2ciOiLmiJHku6PooajkuIDkuKrmlbDmja4iLCJsaSI6WyLmiJHku6PooajliJfooagiLFsi5oiR5Luj6KGo5YWD57uEIl1dfQ.pjSiI6bDwWOmVOSa2-JtvbBO4wP1vfuTej1Q31L7gppWjr7CCi8PEVyItCwEmuh-jJiaSA0I_ARObg06-lXPHA'
密文只有三秒钟生命,四秒后破解密文试一试
收到的加密内容为:
b'eyJhbGciOiJIUzUxMiIsImlhdCI6MTU2OTI0MjI4NiwiZXhwIjoxNTY5MjQyMjg5fQ.eyJtc2ciOiLmiJHku6PooajkuIDkuKrmlbDmja4iLCJsaSI6WyLmiJHku6PooajliJfooagiLFsi5oiR5Luj6KGo5YWD57uEIl1dfQ.pjSiI6bDwWOmVOSa2-JtvbBO4wP1vfuTej1Q31L7gppWjr7CCi8PEVyItCwEmuh-jJiaSA0I_ARObg06-lXPHA'
Traceback (most recent call last):File "G:/dailyfresh/a0test/01testisdangerous.py", line 20, in <module>yuanwen = obj2.loads(mi)File "C:\ProgramData\Anaconda3\lib\site-packages\itsdangerous\jws.py", line 205, in loadsdate_signed=self.get_issue_date(header),
itsdangerous.exc.SignatureExpired: Signature expiredProcess finished with exit code 1
报错类型
超时过期的密码,很好很强大
下一个目标:应用此法,保护激活URL的安全
下一集完成
dj鲜生-16-这是危险的模块-isdangerous相关推荐
- dj鲜生-10200818-商品首页展示-静态页下载资源
静态页资源下载 https://cloud.189.cn/t/fqq6Vr36nIf2 (鲜生电商-静态页面) 商品首页模板处理 index.html页首理 生鲜首页的抽取过程,详解 - 知乎 htt ...
- dj鲜生-38-项目上线简介-从本地小项目到云服务的调试
小结 项目上线要做的事情有: 代码传到linux虚拟机上 准备相关的运环境 配置好ip与端口 让程序跑起来 项目上线,就是把windows上的代码,拷备到linux上,让代码跑起来 在win上跑代码的 ...
- dj鲜生-01-新建项目-配置数据库
静态页面地址 静态文件资源下载: https://cloud.189.cn/t/U7vAjafAfAVb (鲜生电商-静态页面) 创建一个项目 pycharm打开项目 数据库的准备 新建一个数据库 & ...
- dj鲜生-17-改造激活用户的代码-解决安全隐患
改造前的代码是这样的 class ActiveView(View):def get(self, request, info):"""用户认证""&qu ...
- dj鲜生-用户中心-历史购物
用户中心,历史浏览记录,界面情况 思考与讨论 增 什么时候需要添加历史浏览记录 https://juejin.im/editor/drafts/5da33220e51d45782c23fad2 用户浏 ...
- dj鲜生-35-设置django的session使用redis来存储
session的回顾 使用redis存储session 一 安装 pip install django-redis 二 配置缓存连接redis # Django的缓存配置 CACHES = {&quo ...
- dj鲜生-37-order应用-模型类创建
主要两张表 进入到订单应用 初始也是空的 订单模型类 一个注意点 如果我的字段,要关联另一个应用的模型类,见框框 应用名.模型类名 用这种方式来跨应用关联 订单商品模型类 class OrderGoo ...
- dj鲜生-让应用的模型类生效,搬家到云服务器-非本地操作
代码弄到云 生成迁移文件 报错 解决办法,安装pillow pip3 install pillow 再次生成迁移文件 所有的表都成功生成了 迁移生成表 迁移前的表
- dj鲜生-36-商品应用-其它模型类的创建-完善goods应用的数据表
用户模块处理的差不多了 准备商品模块 总共七张表,要做模型类 原始models 就是一个空的 开始弄进去代码 开始打代码 商品模型类的定义 from django.db import models f ...
最新文章
- Redis安装与源码调试
- cinder块存储配置使用lvm
- WINCE5.0添加Alphablend组件时遇到的问题
- AES加密解密算法Java实现
- 几种适合开发用的在线编辑器-推荐及下载
- 1013 B. And
- [HNOI2019]校园旅行
- java io流操作_十个Demo进行讲解Java中IO流的常用操作~
- 数据库学习之MySQL安装
- Qt文档阅读笔记-Qt工作笔记-QThread解析与实例(主线程发送信号给子线程)
- C++ STL 乱序算法
- npm 编译打包vue_从零到一教你基于vue开发一个组件库
- H3CSE园区-MSTP
- MTK USB OTG功能如何打开及实现
- 彩色星球科技旗下娱乐元宇宙产品“彩色世界”正式上线;GIGABYTE推出新一代AORUS专业电竞笔电 | 全球TMT...
- 贴片晶振为什么要邻层挖空敷铜,背后的原理原来是这样的!#终南小师傅
- python实现word文档合并
- 【人工智能】机器学习:岭回归与LASSO回归(Ridge/LASSO Regression)
- 如何把win7电脑设置成网站服务器吗,如何为win7电脑设置服务器
- 前端开发行业真的会被AI取代吗?
热门文章
- Tensoflow-SSD代码解读(github-balancap代码)
- 如何进行 node.js 的 安装与卸载
- 基于Spring+SpringMVC+Mybatis架构的开源博客
- 个人自媒体博客整站模板
- vant自动按需引入组件 (推荐)
- sqlserver文件转mysql_怎样将Sqlserver数据库转成mysql数据库
- 都爱云支付首页模板(上传即可使用)
- 关于“服务器提交了协议冲突. Section=ResponseStatusLine问题请
- Chrome 开发工具 (Chrome Developer Tools):Network Panel说明
- mysql —— 分表分区