Python使用PyJWT实现JSON Web Tokens加密解密

网友投稿 970 2022-05-30

科普

JSON Web Token 入门教程

Json Web Token JWT三部分组成:

(1)Header

(2)Payload

(3)Signature

Header.Payload.Signature

1

Base64URL 算法:

Base64 有三个字符+、/和=,在 URL 里面有特殊含义,

所以要被替换掉:=被省略、+替换成-,/替换成_

代码实现

github:https://github.com/jpadilla/pyjwt/

文档:https://pyjwt.readthedocs.io/en/latest/index.html

安装

pip install PyJWT

1

复制jwt网站的数据进行加解密测试

https://jwt.io/

代码示例

# -*- coding: utf-8 -*- import jwt data = { "sub": "1234567890", "name": "John Doe", "iat": 1516239022 } # 加密 py3加密后是字节型数据 encoded = jwt.encode(data, 'secret', algorithm='HS256') print(encoded.decode()) # eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. # eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ. # DzMJlzRbt6kdh1Kbbqv8SA8QsddwfSoM1bqw41tQY2k print(jwt.decode(encoded, 'secret', algorithms=['HS256'])) # {'sub': '1234567890', 'name': 'John Doe', 'iat': 1516239022}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

增加过期时间,Python3代码示例

# -*- coding: utf-8 -*- import time from datetime import datetime, timedelta import jwt class JwtUtil(object): def __init__(self, key): self.key = key def encode(self, payload, expires=7): """ 获取token :param payload: dict :param expires: 过期时间:天 :return: str """ # 使用utc时间 payload['exp'] = datetime.utcnow() + timedelta(days=expires) return jwt.encode(payload=payload, key=self.key).decode() def decode(self, token): """ 验证并解析token :param token: str :return: dict """ return jwt.decode(jwt=token, key=self.key)

1

2

3

4

Python:使用PyJWT实现JSON Web Tokens加密解密

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

JSON Python web前端

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:Node.js 的安装
下一篇:Python:kazoo模块与Zookeeper交互
相关文章