为什么要用itsdangerous,是为了保证你的加密的数据没有被人修改,因为修改了就无法重新解出原数据,若超时了也无法解出内容,应用场景激活,发一个激活的网址给你,你若在一定时间内,未激活,会激活超时。
首先介绍下载pycharm中的安装:
安装命令:pip install itsdangerous
有时你想向一个不可信的环境发送一些数据,如何保证安全呢,答案是签名,使用只有你自己知道的秘钥(私钥),来加密签名你的数据,并把加密后的数据发送给别人,当别人取回数据时,你可以确定没人更改过这份数据。
他可以破译你的内容,但是他无法修改你包裹的内容,除非他们也有你的秘钥,只要你保存好你的私钥。
itsdangerous内部默认使用了HMAC和SHA1等加密算法来签名,基于 Django 签名模块。它也支持JSON Web 签名 (JWS)。
应用场景可以用于那个激活。
实例代码如下:
#导入模块,然后呢创建对象设置你的私钥,以及过期时间
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
#创建序列化对象
#参数一是私钥,参数二为有效期def __init__(self, secret_key, expires_in=None, **kwargs):默认为3600
#注私钥是不能公开的,不然别人会模仿你的私钥加密给别人发送信息,这很危险
serlizer = Serializer("吴勇come on",36000)
#data为加密的数据。
data = serlizer.dumps({"openid":"123456"})
print(data)
data = data.decode('utf-8')
data = data+'d'
data = data.encode('utf-8')
print(serlizer.loads(data))
#可以用于网址的校验你只能点击这个网址,但是你不能修改数据
超时报错:
代码:
#导入模块,然后呢创建对象设置你的私钥,以及过期时间
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
#创建序列化对象
#参数一是私钥,参数二为有效期def __init__(self, secret_key, expires_in=None, **kwargs):默认为3600
#注私钥是不能公开的,不然别人会模仿你的私钥加密给别人发送信息,这很危险
serlizer = Serializer("吴勇come on",1)
#data为加密的数据。
data = serlizer.dumps({"openid":"123456"})
print(serlizer.loads(data))
#可以用于网址的校验你只能点击这个网址,但是你不能修改数据
serlizer = Serializer("吴勇come on",1)
import time
time.sleep(2)
print(serlizer.loads(data))
报错信息
Traceback (most recent call last):
File "D:/ptest/smtp/dangerous.py", line 20, in <module>
print(serlizer.loads(data))
File "C:\Users\dell\AppData\Local\Programs\Python\Python36\lib\site-packages\itsdangerous\jws.py", line 205, in loads
date_signed=self.get_issue_date(header),
itsdangerous.exc.SignatureExpired: Signature expired