相关文章推荐
坏坏的皮蛋  ·  alibaba ...·  4 月前    · 
善良的鸵鸟  ·  人民日报海外版-人民网·  5 月前    · 
闷骚的山楂  ·  Python gdal warp函数 ...·  2 年前    · 

有时候我们需要把一些信息传给前端,之后前端再传回来,若是遇到敏感信息就会被暴露,所以我们需要把它加密成一个token,待前端传回来的时候再进行解密。我们可以使用itsdangerous这个模块进行加密和解密操作

1.安装itsdangerous

pip install itsdangerous

2.简单使用

其实itsdangerous的用法有多种,我们这里只用给JSON加解密的方法,需要用到TimedJSONWebSignatureSerializer类的dumps()和loads()方法

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
# 传入秘钥和有效期(秒)
serializer = Serializer('abcd',300)  
token = serializer.dumps({'mobole':'13978488888'}).decode()
print(token)  # 结果:eyJpYXQiOjE1OTk4MDEzNjEsImFsZyI6IkhTNTEyIiwiZXhwIjoxNTk5...
# serializer = Serializer('1234',300)  假如传入的秘钥不正确就会报错
try:
    data = serializer.loads(token)
    print(data)  # 结果:{'mobole': '13978488888'}
except Exception as e:
    print('解密失败')

3.封装成类

封装的好处就是方便调用,使代码业务代码更加简洁,我们这里简单封装一下

from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
from django.conf import settings
class SecretOauth(object):
    def __init__(self):
        # self.serializer = Serializer(secret_key='abcd',expires_in=300)
        # 这里使用django配置文件里提供的秘钥
        self.serializer = Serializer(secret_key=settings.SECRET_KEY,expires_in=300)
    def dumps(self,content_dict):
        token = self.serializer.dumps(content_dict).decode()
        return token
    def loads(self,token):
        try:
            content_dict = self.serializer.loads(token)
        except Exception as e:
            return None
        return content_dict
if __name__ == '__main__':
    res = SecretOauth().dumps(content_dict={'mobile':'13978488888'})
    print('加密后:', res)
    res2 = SecretOauth().loads(res)
    print('解密后:', res2)
    print(res2.get('mobile'))
                    有时候我们需要把一些信息传给前端,之后前端再传回来,若是遇到敏感信息就会被暴露,所以我们需要把它加密成一个token,待前端传回来的时候再进行解密。我们可以使用itsdangerous这个模块进行加密和解密操作1.安装itsdangerouspip install itsdangerous2.简单使用其实itsdangerous的用法有多种,我们这里只用给JSON加解密的方法,需要用到TimedJSONWebSignatureSerializer类的dumps()和loads()方法from i
				
首先itsdangerous包是已经安装的,在models已导入from itsdangerous import TimedJSONWebSignatureSerializer as Serializer 点入itsdangerous发现是从jws.py导入TimedJSONWebSignatureSerializer,from .jws import TimedJSONWebSignatureSerializer 以下为jws.py文件 `import hashlib import time impor.
在Flask中生成用于验证的token时,从itsdangerous(2.1.2)中调用TimedJSONWebSignatureSerializer时发现报错:cannot import name 'TimedJSONWebSignatureSerializer' from 'itsdangerous' 跳转到代码中确实没有找到TimedJSONWebSignatureSerializer类。 查看itsdangerous文档,发现该库在2.0.0版本之后就将TimedJSONWebS
通过测试发现,对于TimedJSONWebSignatureSerializer的加密算法会将字典类型加密加密后的格式是字节类型。但是对于他的解密算法确实,能够将字符串或者字节类型的加密数据,都解密成字典类型。 from itsdangerous import TimedJSONWebSignatureSerializer as Serializer from django.conf import settings # 生成一个序列化对象(加密秘钥,加密时间5秒) serializer = Seria
使用场景: 一、给字符串添加签名:   发送方和接收方拥有相同的密钥--"secret-key",发送方使用密钥对发送内容进行签名,接收方使用相同的密钥对接收到的内容进行验证,看是否是发送方发送的内容 1 >>> from itsdangerous import Signer 2 >>> s = Signer('secret-...
为什么要用itsdangerous,是为了保证你的加密数据没有被人修改,因为修改了就无法重新解出原数据,若超时了也无法解出内容,应用场景激活,发一个激活的网址给你,你若在一定时间内,未激活,会激活超时。 首先介绍下载pycharm中的安装: 安装命令:pip install itsdangerous 有时你想向一个不可信的环境发送一些数据,如何保证安全呢,答案是签名,使用只有你自己知道的秘钥(...
首先我们来看生成令牌和解码令牌的代码: from itsdangerous import TimedJSONWebSignatureSerializer as Serializer     s = Serializer(app.config['SECRET_KEY'], expires_in=3600)     token = s.dumps({'confirm': 23})
from itsdangerous import TimedJSONWebSignatureSerializer as TJWSSerializer from itsdangerous import BadData # itsdangerous: 进行数据的加解密 # 安装: pip install itsdangerous # if __name__ == '__main__': # ...
1.导入TimedJSONWebSignatureSerializer,用于生成具有过期时间的JSON Web签名。from itsdangerous import TimedJSONWebSignatureSerializer as Serializer s=Serializer('secret key',expires_in=3600) token=s.dumps({'key':'val'})#
pip install itsdangerous 在取消订阅某个通讯时,你可以在URL里序列化并且签名一个用户的ID。这种情况下你不需要生成一个一次性的token并把它们存到数据库中。在任何的激活账户的链接或类似的情形下,同样适用。 被签名的对象可以被存入cookie中或其他不可信来源,这意味着你不需要在服务端保存session,这样可以降低数据...