小结,加密与解密

加密# 导入一个类
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相关推荐

  1. dj鲜生-10200818-商品首页展示-静态页下载资源

    静态页资源下载 https://cloud.189.cn/t/fqq6Vr36nIf2 (鲜生电商-静态页面) 商品首页模板处理 index.html页首理 生鲜首页的抽取过程,详解 - 知乎 htt ...

  2. dj鲜生-38-项目上线简介-从本地小项目到云服务的调试

    小结 项目上线要做的事情有: 代码传到linux虚拟机上 准备相关的运环境 配置好ip与端口 让程序跑起来 项目上线,就是把windows上的代码,拷备到linux上,让代码跑起来 在win上跑代码的 ...

  3. dj鲜生-01-新建项目-配置数据库

    静态页面地址 静态文件资源下载: https://cloud.189.cn/t/U7vAjafAfAVb (鲜生电商-静态页面) 创建一个项目 pycharm打开项目 数据库的准备 新建一个数据库 & ...

  4. dj鲜生-17-改造激活用户的代码-解决安全隐患

    改造前的代码是这样的 class ActiveView(View):def get(self, request, info):"""用户认证""&qu ...

  5. dj鲜生-用户中心-历史购物

    用户中心,历史浏览记录,界面情况 思考与讨论 增 什么时候需要添加历史浏览记录 https://juejin.im/editor/drafts/5da33220e51d45782c23fad2 用户浏 ...

  6. dj鲜生-35-设置django的session使用redis来存储

    session的回顾 使用redis存储session 一 安装 pip install django-redis 二 配置缓存连接redis # Django的缓存配置 CACHES = {&quo ...

  7. dj鲜生-37-order应用-模型类创建

    主要两张表 进入到订单应用 初始也是空的 订单模型类 一个注意点 如果我的字段,要关联另一个应用的模型类,见框框 应用名.模型类名 用这种方式来跨应用关联 订单商品模型类 class OrderGoo ...

  8. dj鲜生-让应用的模型类生效,搬家到云服务器-非本地操作

    代码弄到云 生成迁移文件 报错 解决办法,安装pillow pip3 install pillow 再次生成迁移文件 所有的表都成功生成了 迁移生成表 迁移前的表

  9. dj鲜生-36-商品应用-其它模型类的创建-完善goods应用的数据表

    用户模块处理的差不多了 准备商品模块 总共七张表,要做模型类 原始models 就是一个空的 开始弄进去代码 开始打代码 商品模型类的定义 from django.db import models f ...

最新文章

  1. Redis安装与源码调试
  2. cinder块存储配置使用lvm
  3. WINCE5.0添加Alphablend组件时遇到的问题
  4. AES加密解密算法Java实现
  5. 几种适合开发用的在线编辑器-推荐及下载
  6. 1013 B. And
  7. [HNOI2019]校园旅行
  8. java io流操作_十个Demo进行讲解Java中IO流的常用操作~
  9. 数据库学习之MySQL安装
  10. Qt文档阅读笔记-Qt工作笔记-QThread解析与实例(主线程发送信号给子线程)
  11. C++ STL 乱序算法
  12. npm 编译打包vue_从零到一教你基于vue开发一个组件库
  13. H3CSE园区-MSTP
  14. MTK USB OTG功能如何打开及实现
  15. 彩色星球科技旗下娱乐元宇宙产品“彩色世界”正式上线;GIGABYTE推出新一代AORUS专业电竞笔电 | 全球TMT...
  16. 贴片晶振为什么要邻层挖空敷铜,背后的原理原来是这样的!#终南小师傅
  17. python实现word文档合并
  18. 【人工智能】机器学习:岭回归与LASSO回归(Ridge/LASSO Regression)
  19. 如何把win7电脑设置成网站服务器吗,如何为win7电脑设置服务器
  20. 前端开发行业真的会被AI取代吗?

热门文章

  1. Tensoflow-SSD代码解读(github-balancap代码)
  2. 如何进行 node.js 的 安装与卸载
  3. 基于Spring+SpringMVC+Mybatis架构的开源博客
  4. 个人自媒体博客整站模板
  5. vant自动按需引入组件 (推荐)
  6. sqlserver文件转mysql_怎样将Sqlserver数据库转成mysql数据库
  7. 都爱云支付首页模板(上传即可使用)
  8. 关于“服务器提交了协议冲突. Section=ResponseStatusLine问题请
  9. Chrome 开发工具 (Chrome Developer Tools):Network Panel说明
  10. mysql —— 分表分区