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

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: Python:使用PyJWT实现JSON Web Tokens加密解密

科普

JSON Web Token 入门教程

Json Web Token JWT三部分组成:

(1)Header

(2)Payload

(3)Signature

Header.Payload.Signature

Base64URL 算法:

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

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


代码实现

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

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


安装

pip install PyJWT

复制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}

增加过期时间,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)


            </div>
目录
相关文章
|
3月前
|
存储 JSON 数据格式
Python教程:json中load和loads的区别
【7月更文挑战第17天】在Python的`json`模块中, `load`与`loads`函数均用于JSON至Python对象的转换, 区别在于: - **`loads`**处理JSON格式的**字符串** 其中`data.json`文件内容为`{&quot;name&quot;: &quot;Bob&quot;, &quot;age&quot;: 30}`。 简而言之, `loads`用于字符串, 而`load`用于文件对象。根据数据来源选择合适的方法。
|
2月前
|
JSON 数据格式 Python
python处理类似json的文件
python处理类似json的文件
|
5月前
|
JSON fastjson 数据格式
几种Json工具包的解析速度对比
几种Json工具包的解析速度对比
199 0
|
JSON JavaScript 前端开发
【Python】一文带你了解并使用 Json 模块
python的json模块是python官方提供的一个用于解析和生成JSON数据格式的库。JSON是JavaScript对象表示法(JavaScript Object Notation)的缩写,是一种轻量级的数据交换格式,常被用于Web应用程序中,也被广泛地应用于非Web应用程序中。python的json库可以方便地将python中的数据转换为JSON格式数据,并支持将JSON格式数据转换为python中的数据类型。
319 0
【Python】一文带你了解并使用 Json 模块
|
JSON 关系型数据库 MySQL
Python--json配置文件
Python--json配置文件
113 0
|
JSON JavaScript 前端开发
python中的JSON模块详解
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,它使得人们很容易的进行阅读和编写同时也方便了机器进行解析和生成。适用于进行数据交互的场景,比如网站前台与后台之间的数据交互。
100 0
|
存储 JSON JavaScript
Python3内置模块之json编码解码方法讲解
Python3内置模块之json编码解码方法讲解
|
JSON 算法 数据安全/隐私保护
Python:使用PyJWT实现JSON Web Tokens加密解密
Python:使用PyJWT实现JSON Web Tokens加密解密
192 0
|
JSON 数据格式 Python
python json 模块
json模块作用
63 0
|
JSON JavaScript 前端开发
每周一个 Python 模块 | json
json 模块提供了一个类似于 pickle 的 API,将内存中的 Python 对象转换为 JSON 序列。与 pickle 不同,JSON 具有以多种语言(尤其是 JavaScript)实现的优点。它在 REST API 中 Web 服务端和客户端之间的通信被广泛应用,同时对于应用程序间通信需求也很有用。
105 0
下一篇
无影云桌面