当前位置: 首页 > news >正文

JWT算法详解

JWT(JSON Web Token)的整个算法流程主要基于其签名算法。以最常见的签名算法HS256(HMAC SHA256)为例,以下是详细的算法流程,涵盖编码、签名和验证过程:

  • 编码

  • 构造头部(Header):头部通常是一个包含令牌类型和签名算法的 JSON 对象,例如:
{"alg": "HS256","typ": "JWT"
}

将其转换为 UTF-8 字符串,然后进行 Base64Url 编码。

  • 构造载荷(Payload):载荷包含用户信息和其他声明(如过期时间、签发者等),也是一个 JSON 对象,例如:
{"sub": "1234567890","name": "John Doe","iat": 1516239022,"exp": 1516239022 + 3600
}

同样转换为 UTF-8 字符串并进行 Base64Url 编码。

  • 组合编码后的头部和载荷:将编码后的头部和载荷用 "." 连接起来,形成一个字符串。

  • 签名

  • 生成签名:使用 HMAC SHA256 算法,以密钥(secret key)和上述连接后的字符串为输入,生成一个签名。公式如下:

    signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)

    将生成的签名进行 Base64Url 编码。

  • 组合完整令牌:将编码后的头部、载荷和签名用 "." 连接起来,形成完整的 JWT 令牌。

  • 验证

  • 提取头部和载荷:从令牌中提取编码后的头部和载荷部分。

  • 生成新的签名:使用相同的密钥和算法,对提取的头部和载荷部分重新生成签名。

  • 比对签名:将新生成的签名与令牌中的签名部分进行比对,若一致则验证成功。

相关文章:

  • iframe下系统访问跨域问题解决办法
  • 统计图表ECharts
  • vue vite开发时保留console.log打包完后依然想保留某个文件夹下的console.log方便以后的观察
  • Linux的基础的操作指令
  • 关于ORM
  • 辛格迪客户案例 | 上海科济药业细胞治疗生产及追溯项目(CGT)
  • Qt-创建模块化.pri文件
  • Windows BilibiliHistoryFetcher-v1.3.2-v1.2.1-开源B站历史记录管理工具[支持批量管理下载]
  • 01_Flask快速入门教程介绍
  • OneClicker脚本自动运行工具
  • 白嫖腾讯的H20!!!同时部署RVC模型
  • 堡垒机和跳板机之区别(The Difference between Fortress and Springboard Aircraft)
  • 一文详解卷积神经网络中的卷积层和池化层原理 !!
  • 量化交易 - RSRS(阻力支撑相对强度)- 正确用法 - 年均收益18%
  • 进行ecovadis认证有哪些优势?百胜咨询:专业ecovadis认证辅导机构
  • Java并发:线程池
  • 车载软件架构 --- 二级boot设计说明需求规范
  • 阻塞队列-ArrayBlockingQueue
  • C++算法(11):vector作为函数参数的三种传递方式详解
  • Mininet--nodelib.py源码解析
  • 中纪委驻中组部纪检监察组原组长李刚被捕
  • 大家聊中国式现代化|权衡:在推进中国式现代化中当好龙头
  • 罗马教皇方济各去世,享年88岁
  • 林间徐行寻风眠——关于浙美“徐宗帅捐赠纪念展”
  • 道客网络陈齐彦:技术无界化,开源让AI变成了“全民食堂”
  • 针灸学专家夏玉清逝世,20岁时奔赴抗美援朝战场救护伤员