isdangerous包
questions: itsdangerous用来解决什么问题,为什么需要用到itsdangerous?
安全的加密解密:
1、使用没有逆运算的公式,只能加密不能解密。
2、可逆,能加密解密。保证安全性——私钥。
itsdangerous内部默认使用了HMAC和SHA1来签名,基于 Django 签名模块。它也支持JSON Web 签名 (JWS)。
itsdangerous模块的参考资料链接 :
https://itsdangerous.readthedocs.io/en/1.1.x/
通过资料里的API ,可以看到一个类:
class itsdangerous.serializer.
Serializer
(secret_key, salt=b'itsdangerous', serializer=None, serializer_kwargs=None, signer=None, signer_kwargs=None, fallback_signers=None)
itsdangerous这个包中提供了一个class
Serializer 可根据私钥创建一个对象,创建对象后可调用很多方法,常用的dumps()加密\loads()解密
以Django web 项目 加密 json数据格式为列:
需使用的类:TimedJSONWebSignatureSerializer
timed:加密信息有时效性
json: 表示加密信息为json格式
web: 表示是网站中使用的加密签名
serializer:序列化器,处理器
code:
from itsdangerous.jws import TimedJSONWebSignatureSerializer
from django.conf import settings
def dumps(json,expires):
"""
将字典加密,返回加密字符串
:param json: 字典
:return: 字符串
"""
serializer = TimedJSONWebSignatureSerializer(settings.SECRET_KEY,expires)
json_str = serializer.dumps(json).decode()
return json_str
def loads(json_str,expires):
"""
将加密字符串解密
:param json_str: 加密字符串
:return: 字典
"""
serializer = TimedJSONWebSignatureSerializer(settings.SECRET_KEY, expires)
try:
json = serializer.loads(json_str)
except:
return None
else:
return json
文章为自己学习所记录,目的是方便自己查阅。想知道isdangerous更多内容的请查阅文档资料(文中已给链接),文章内容若有误,欢迎评论区指正。