通过测试发现,对于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'>
浙公网安备 33010602011771号