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 loads
    date_signed=self.get_issue_date(header),
itsdangerous.exc.SignatureExpired: Signature expired

Process finished with exit code 1

报错类型

在这里插入图片描述

超时过期的密码,很好很强大

下一个目标:应用此法,保护激活URL的安全

下一集完成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

鲸鱼编程pyhui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值