時には私たちは、このようなアプリケーション署名、として、いくつかの重要なデータの暗号化を必要とするqq
承認openid
ようにと。
セキュリティ暗号化
ここではいくつかあるitsdangerous
機密データのビットを暗号化することができる、それが可能なpip
直接インストールすることは。で使用されている次django
の暗号化には共通。
from itsdangerous.jws import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings
def dumps(dict, expires):
'''
将字典加密,返回加密字符串
:param dict:字典
:param expires:过期时间
:return:字符串
'''
serializer = Serializer(settings.SECRET_KEY, expires_in=expires)
json_str = serializer.dumps(dict).decode()
return json_str复制代码
上記のキーは、データが一般に公開されていない、アプリケーションを使用して暗号化が、我々はまた、すべてが理論的に壊すことができない、有効期限を設定されています。あなたが自分自身を復号化したい場合は、以下の方法を取ります。これは、機密データのいくつかを検証するために適用することができます。
def loads(json_str, expires):
'''
将加密字符串解密
:param json_str: 加密字符串
:return: 字典
'''
serializer = Serializer(settings.SECRET_KEY, expires_in=expires)
try:
dict = serializer.loads(json_str)
except:
# 如果字符串被修改过,或超期,会抛异常
return None
else:
return dict复制代码
対称暗号化
base64では、対称暗号化方式で可逆的です。いくつかの重要度の低いデータの暗号化のために。
import pickle
import base64
def dumps(dict):
'''将字典转换成bytes'''
json_bytes = pickle.dumps(dict)
# 加密
json_secret = base64.b64encode(json_bytes)
# 转字符串
json_str = json_secret.decode()
return json_str
def loads(json_str):
'''字符串转bytes'''
json_secret = json_str.encode()
# 解密
json_bytes = base64.b64decode(json_secret)
# 转字典
json_dict = pickle.loads(json_bytes)
return json_dict复制代码
辞書場合はbase64で暗号化と復号化パラメータは、バイトを渡され、dict
使用して暗号化、pickle
モジュールに進む前に、バイト型に変換されます。
ます。https://juejin.im/post/5d03c50f51882562fb138827で再現