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>
目录
相关文章
|
Shell 测试技术 Linux
通过shell脚本进行linux服务器的CPU和内存压测
通过shell脚本进行linux服务器的CPU和内存压测
645 0
|
Java 数据安全/隐私保护 Android开发
如何查看签名后的jks文件信息(查看应用签名)
如何查看签名后的jks文件信息(查看应用签名)
4601 0
如何查看签名后的jks文件信息(查看应用签名)
|
25天前
|
Web App开发 数据采集 前端开发
集成Scrapy与异步库:Scrapy+Playwright自动化爬取动态内容
集成Scrapy与异步库:Scrapy+Playwright自动化爬取动态内容
|
3月前
|
人工智能 搜索推荐 数据挖掘
抖音电商API直播间弹幕互动,用户参与度翻倍!
在数字化电商时代,抖音电商API助力商家提升直播互动。通过实时弹幕处理、智能回复与数据分析,实现用户参与度翻倍,增强粘性、提升转化。本文详解API集成步骤与实战应用,助您打造高效直播间。
497 0
|
1月前
|
边缘计算 运维 监控
云管平台(CMP)介绍及厂商推荐
云管平台(CMP)是企业多云、混合云管理的核心工具,实现资源统一调度、自动化运维、成本优化与安全合规。支持多云整合、智能监控、云原生及边缘计算,提升管理效率,降低运营成本,助力企业数字化转型。佳杰云星CMP支持主流云厂商,提供免费社区版。
|
2月前
|
Web App开发 开发框架 .NET
使用 Playwright MCP 实现小红书全自动发布的完整流程
告别小红书自动化中的登录难题!本文手把手教你使用Playwright MCP,通过复用已登录浏览器会话,实现图文发布全程无人值守。无需应对验证码,避免登录态失效,真正实现稳定、高效的自动化操作,助你轻松提升运营效率。
|
算法 定位技术 图形学
unity2d实现一个全方位的无限随机地图
unity2d实现一个全方位的无限随机地图
901 0
|
异构计算 Windows
使用MATLAB连接USRP
使用MATLAB连接USRP
585 2
|
JSON Kubernetes Go
IDEA使用Kubernetes插件编写YAML
IDEA使用Kubernetes插件编写YAML
558 0
IDEA使用Kubernetes插件编写YAML