Python:使用PyJWT实现JSON Web Tokens加密解密
2023-09-14 09:07:15 时间
科普
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)
相关文章
- 使用python写docx文档
- 【python】web开发
- [Python] Python Libs
- Python编程语言学习:在for循环中如何同时使用2个变量或者3个变量
- 成功解决OSError: [E050] Can‘t find model ‘en_core_web_sm‘. It doesn‘t seem to be a Python package or a v
- 猿创征文|Python基础——Visual Studio版本——Web开发
- 〖Python WEB 自动化测试实战篇⑮〗 实战 - 自动化测试的持续集成
- Python零基础爬虫之回车桌面壁纸并实现自动换壁纸(内附完整源码)
- 一文读懂Python web框架和web服务器之间的关系
- 爱了爱了,20个好用到爆的Python函数
- Python实现GWO智能灰狼优化算法优化支持向量机回归模型(svr算法)项目实战
- python命令行参数
- 【华为OD机试 2023】单词倒序(C++ Java JavaScript Python)
- python之获取本机ip
- python web py入门(54)- jQuery - 失去焦点事件
- python web py入门(52)- jQuery - $("").html()实现在页面提示信息
- python web py入门(51)- jQuery - $("").next()获取同级的下一个元素
- python web py入门(9)- 论坛首页的模板中模板
- 如何将Python的上级目录的文件导入?【from.import】