ltsdangerous加密解密

  • 前言

在做QQ第三方登录时,用户跳转到QQ登录界面登录成功后,会在URL返回一个code参数。前端把code发送给后端。后端收到后,会查询出openid。然后判断openid是否存在,如果存在就可以绑定用户或新建用户。如果不存在,进把openid返回给前端。前端填完注册信息后,把openid、手机号码、用户名、密码等参数再发送给后端处理。

这时候,openid因为先传回去给前端,再传回来给后端。所以中间涉及了安全问题。万一别人篡改了openid呢?所以需要对openid进行加密!这时候就用到了ltsdangerous模块。

 

  • 基本使用

(1)安装

pip install itsdangerous

(2)使用

TimedJSONWebSignatureSerializer 可以生成带有效期的加密数据

格式:

TimedJSONWebSignatureSerializer([秘钥], [有效期])

- 签名(加密): dumps(dict)            返回bytes类型数据
- 验签(解密): loads(str)                返回字典

  - 可以确保数据没有被篡改
       - 数据会过期
- 解密出错异常
        - BadData 父类
        - SignatureExpired:  签名过期
        - BadSignature:  要解密的数据被篡改 

示例:

加密

a = TimedJSONWebSignatureSerializer("h8329hrjkewhf89sdy*()&",60*60)
# b是加密后的字符串
b = a.dumps({"key":"我是不能暴露的信息"}).decode()

 

解密

# c是字典
c = a.loads(b)
# 如果签名过期,抛异常SignatureExpired
# 如果数据被篡改过,抛异常BadSignature

 

posted @ 2018-11-18 10:00  苦瓜爆炒牛肉  阅读(403)  评论(0编辑  收藏  举报