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

简介: 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>
目录
相关文章
|
Java 数据安全/隐私保护 Android开发
如何查看签名后的jks文件信息(查看应用签名)
如何查看签名后的jks文件信息(查看应用签名)
4396 0
如何查看签名后的jks文件信息(查看应用签名)
|
2月前
|
人工智能 搜索推荐 数据挖掘
抖音电商API直播间弹幕互动,用户参与度翻倍!
在数字化电商时代,抖音电商API助力商家提升直播互动。通过实时弹幕处理、智能回复与数据分析,实现用户参与度翻倍,增强粘性、提升转化。本文详解API集成步骤与实战应用,助您打造高效直播间。
372 0
|
28天前
|
Web App开发 开发框架 .NET
使用 Playwright MCP 实现小红书全自动发布的完整流程
告别小红书自动化中的登录难题!本文手把手教你使用Playwright MCP,通过复用已登录浏览器会话,实现图文发布全程无人值守。无需应对验证码,避免登录态失效,真正实现稳定、高效的自动化操作,助你轻松提升运营效率。
|
2月前
|
数据采集 存储 NoSQL
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
Scrapy 框架实战:构建高效的快看漫画分布式爬虫
|
5月前
|
人工智能 Shell 开发者
Python项目管理工具 PDM
PDM(Python Development Master)是一款现代化的Python包管理工具,基于PEP 582标准,无需虚拟环境即可实现依赖隔离。它支持PEP 621声明项目元数据,告别`setup.py`,并具备快速安装、简洁依赖管理和内置脚本系统等优势。通过简单命令如`pdm init`、`pdm add`和`pdm run`,用户可轻松完成项目初始化、依赖管理和运行。适合希望简化依赖管理、追求现代工具体验的开发者,尤其对传统工具如`pipenv`或`poetry`不满意的用户。
253 1
|
算法 定位技术 图形学
unity2d实现一个全方位的无限随机地图
unity2d实现一个全方位的无限随机地图
851 0
|
异构计算 Windows
使用MATLAB连接USRP
使用MATLAB连接USRP
529 2
|
JSON Kubernetes Go
IDEA使用Kubernetes插件编写YAML
IDEA使用Kubernetes插件编写YAML
485 0
IDEA使用Kubernetes插件编写YAML
|
安全 Linux
Linux命令(63)之ulimit
Linux命令(63)之ulimit
249 2