itsdangerous
itsdangerous
1. 简介
它常用于url参数加密解密。
1.1. 安装
pip install itsdangerous
2. 使用
2.1. TimedJSONWebSignatureSerializer
有过期时间的签名,过期后解密会报错。
过期时间并不会影响加密和解密,但建议加密和解密实例使用相同过期时间或使用同一实例。
  
# itsdangerous测试  
import time  
from itsdangerous import TimedJSONWebSignatureSerializer as Serialzier  
from itsdangerous import SignatureExpired, BadSignature  
def generate_confirm_token(key='secret key', expiration_in=300):  
    # 实例化  
    # 参数一为任意字符串,一般用flask的secret key  
    # 参数二为过期时间  
    s = Serialzier(key, expiration_in)  
    # 要加密的数据  
    data = {'id': '123'}  
    # 加密并解码为str  
    return s.dumps(data).decode()  
def read_confirm_token(token, key='secret key', expiration_in=300):  
    s = Serialzier('secret key')  
    try:  
        data = s.loads(token.encode('utf-8'))  
    except SignatureExpired:  
        raise SignatureExpired('令牌已过期')  
    except BadSignature:  
        raise BadSignature("令牌不合法")  
    else:  
        print(data)  
    if data.get('id') == "123":  
        return True  
    else:  
        return False  
token = generate_confirm_token(expiration_in=5)  
print("加密后的参数:", token)  
time.sleep(6)  
res = read_confirm_token(token, expiration_in=5)  
print(res)  
  
输出:itsdangerous.exc.BadSignature: 令牌不合法
2.2. 其它
模块还有一些其它的加密方式,此处略过。
- JSONWebSignatureSerializer(加salt的签名)
- Signing With Timestamps (带时间戳的签名)
- URL Safe Serialization (URL安全序列化)
    日拱一卒无有尽,功不唐捐终入海
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号