Loading [MathJax]/jax/output/HTML-CSS/config.js

Good,True and Beautiful

Good Good Study, Day Day Up

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

jwt token Example - Python

0 Pre

  1. Install Python3
  2. Install PyCrypto
  3. Install PyJWT

1 token

  1. 由三部分组成 header, payload, sign 并用逗号连接各部分
  2. header和payload用UTF8进行字符集编码
  3. 各部分都由url safe的Base64编码进行字符转换并且去掉末尾的padding用的=(如果存在)
  4. 一般采用 HS256 和 RS256 两种算法, 当然也还有其他的
  5. 一般情况下 header, payload是明文传输,因此不能进行输入敏感信息

2 coding

2.1 HS256

token=jwt.encode({'a':1}, 'key') # 默认 algorithm 为 HS256
print(token) # output: b'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhIjoxfQ.Z4rGK-v6a2sWAUQdmALR3aYbXZviLr8j26a9ndx_bM4'
# header: 
# {
#  typ: "JWT",
#  alg: "HS256"
# }
payload=jwt.decode(token,'key') # 从header部分自动解析出 algorithm, payload 并用sign部分进行验证
print(payload) # output: {'a': 1}

2.2 RS256

import jwt
from Crypto.PublicKey import RSA
rsaobj = RSA.generate(1024) # 生成公私钥, 生产位数应该在2048以上
token = jwt.encode({'a':1}, rsaobj.exportKey(), 'RS256') # 用私钥签名, pem 格式
print(token)
payload = jwt.decode(d, rsaobj.publickey().exportKey()) # 用公钥验证, pem 格式
print(payload)

3 chrome tools

JWT Analyzer and Inspector

posted on   Simple Love  阅读(581)  评论(0编辑  收藏  举报

编辑推荐:
· 软件产品开发中常见的10个问题及处理方法
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
阅读排行:
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Browser-use 详细介绍&使用文档
· 软件产品开发中常见的10个问题及处理方法
· Vite CVE-2025-30208 安全漏洞
点击右上角即可分享
微信分享提示