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>
目录
相关文章
|
人工智能 缓存 安全
LangChain开发环境准备-实现私有大模型OpenAI标准接口封装
今天这节课我就将带领小伙伴们将这未完成的一步补全,实现私有大模型OpenAI标准接口封装,并完成LangChain对大模型的调用与测试
2980 0
|
11月前
|
人工智能 前端开发 关系型数据库
过年了,用魔搭+魔笔打造您的 AI 春节贺卡生成器!
本文介绍了如何获取和利用现有的大模型资源,结合魔笔低代码,低成本、高效率地打造一个 AI 春节贺卡生成器。
|
11月前
|
机器学习/深度学习 人工智能 自然语言处理
《一文读懂AI大模型:开启智能新时代的密码》
AI大模型是人工智能领域的重大飞跃,凭借Transformer架构和预训练-微调机制等核心技术,已在智能客服、内容创作、医疗诊断等领域广泛应用。它能处理多模态数据,大幅提升生产效率和生活质量。然而,大模型也面临可解释性、数据隐私和算力瓶颈等挑战。未来,随着技术进步,AI大模型将更加通用化和智能化,推动社会变革,创造更多奇迹。
665 11
什么是数据封装?
数据封装是在通过网络传输信息之前将信息分解成更小的可管理块的过程。在这个过程中,源和目标地址与奇偶校验一起附加到标题中。
|
边缘计算 人工智能 安全
探索边缘计算:定义、优势及未来趋势
探索边缘计算:定义、优势及未来趋势
|
人工智能 API 开发者
免费使用Kimi的API接口,kimi-free-api真香
今年AI应用兴起,各类智能体涌现,但API免费额度有限。为解决这一问题,GitHub上的[kimi-free-api](https://github.com/LLM-Red-Team/kimi-free-api)项目提供了方便,支持高速流式输出、多轮对话等,与ChatGPT接口兼容。此外,还有其他大模型的免费API转换项目,如跃问StepChat、阿里通义Qwen等。该项目可帮助用户免费体验,通过Docker-compose轻松部署。只需获取refresh_token,即可开始使用。这个开源项目促进了AI学习和开发,为探索AI潜力提供了新途径。
3478 3
|
安全
碳捕捉技术:应对气候变化的创新策略
【9月更文挑战第13天】在全球气候变化背景下,碳捕捉技术(CCT)作为减排关键技术,通过工业排放和能源发电中捕获二氧化碳(CO₂),转化为可储存或利用物质,实现长期隔离,有效减少温室气体排放。技术涵盖捕获、转化与储存阶段,应用于水泥、钢铁生产等多个高排放领域。尽管面临成本、能效及安全挑战,但借助技术创新、政策支持及国际合作,CCT有望克服障碍,成为应对气候变化的重要工具,促进可持续发展目标的实现。
|
机器学习/深度学习 人工智能 算法
软件测试中的人工智能应用与前景
随着技术的不断进步,人工智能(AI)在软件测试中的应用越来越广泛。本文将探讨AI在软件测试中的具体应用,包括自动化测试、缺陷预测及测试用例生成等方面的内容。同时,我们将讨论AI在软件测试中的优势和挑战,并展望未来的发展趋势。
|
存储 缓存 PHP
阿里云服务器实例、CPU内存、带宽、操作系统选择参考
对于使用阿里云服务器的用户来说,云服务器的选择和使用非常重要,如果实例、内存、CPU、带宽等配置选择错误,可能会影响到自己业务在云服务器上的计算性能及后期运营状况,本文为大家介绍一下阿里云服务器实例、CPU内存、带宽、操作系统的选择注意事项,以供参考。
阿里云服务器实例、CPU内存、带宽、操作系统选择参考
|
数据采集 数据可视化 大数据
大数据处理中的NumPy实践指南
【4月更文挑战第17天】NumPy实践指南阐述了其在大数据处理中的核心优势,包括高效内存管理、强大数组操作、优化数学函数及与其他库集成。文章提供实践建议,如数据预处理、内存优化、高效数值计算及数据分析可视化,强调使用视图、选择合适数据类型、利用内置函数及并行计算来提升效率。掌握NumPy将助力数据科学家应对大数据挑战。