飞行的猪哼哼

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

通过测试发现,对于TimedJSONWebSignatureSerializer的加密算法会将字典类型加密,加密后的格式是字节类型。但是对于他的解密算法确实,能够将字符串或者字节类型的加密数据,都解密成字典类型。

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings


# 生成一个序列化对象(加密秘钥,加密时间5秒)
serializer = Serializer("asddadwdadwdad", 5)
my_dict = {"name": "renshanwen", "age": 23}
secret_dict = serializer.dumps(my_dict)
print(secret_dict)
print("加密后的数据类型:", type(serializer))
# b'eyJpYXQiOjE2MDE2MjcxMzEsImV4cCI6MTYwMTYyNzEzNiwiYWxnIjoiSFM1MTIifQ.eyJuYW1lIjoicmVuc2hhbndlbiIsImFnZSI6MjN9.HO2FYU8a3puivGvic0R6IPyDSP3sIsMKaY_3CYUsfDh5i2ZMbmhjh0SdsspGe1aBIWhpZvmhRqXU0WV25kwoaA'
# 加密后的数据类型: <class 'itsdangerous.jws.TimedJSONWebSignatureSerializer'>

string_dict = secret_dict.decode()
print(string_dict)
print("解码后的类型:", type(string_dict))

# eyJleHAiOjE2MDE2MjcyODIsImFsZyI6IkhTNTEyIiwiaWF0IjoxNjAxNjI3Mjc3fQ.eyJuYW1lIjoicmVuc2hhbndlbiIsImFnZSI6MjN9.GZkToalENwjfPXVBsysDey8Aix16oZDcX0AA1K2i9s8AIkPA12kWO-Lzxmkq12WtNzVi6jN9Cunstp_Fe5Vk6w
# 解码后的类型: <class 'str'>

# str直接进行解密效果:
no_dict = serializer.loads(string_dict)
print(no_dict)
print("str直接解密后的数据类型:", type(no_dict))
# {'name': 'renshanwen', 'age': 23}
# str直接解密后的数据类型: <class 'dict'>

# 将byte类型解密效果:
no_dict2 = serializer.loads(secret_dict)
print(no_dict2)
print("str直接解密后的数据类型:", type(no_dict2))
# {'name': 'renshanwen', 'age': 23}
# str直接解密后的数据类型: <class 'dict'>
posted on 2020-10-02 16:40  飞行的猪哼哼  阅读(235)  评论(0)    收藏  举报