解码并验证 JWT
使用 JWT 调试器解码 JWT,并验证 HMAC 签名。
- 作者:
- Mqttable
- 更新:
本页目录5 个章节
加载中...
使用 JWT 调试器解码 JWT,并验证 HMAC 签名。
加载中...
练习时只使用一次性 Token 和 Secret。不要把生产 Credential 放进截图或共享调试记录。
当前源码的工具目录分为 数据与文本、图像、文件与时间 三组,JWT 调试器和文本对比归入数据与文本。搜索支持 JWT / Token / 令牌、Binary / Hex / 二进制 等别名;匹配结果不超过五项时直接平铺,清空搜索后恢复分组。现有安装包和下方截图可能仍显示旧分类。

先解码 Token,再使用预期算法和 Secret 验证签名。
当前源码为 Header/Payload 增加带行号、撤销和无损格式化的 JSON 编辑器。解码显示原始 UTF-8 JSON,不从浮点对象重新生成文本;编码拒绝重复键、孤立代理项及不能安全表示的数字。格式化不会自动重新签名,解码也不等于验签。
当前源码已提供以下跳转入口;这不代表现有安装包已经包含这些改动。上方截图展示独立工具的解码与验签区域。
从客户端或压测组进入时,保留原稿返回 会恢复未保存的表单和内嵌 JWT 草稿。使用此 Token 并返回 则在确认后只填写密码草稿,不自动保存、连接或启动压测。替换已保存凭据引用或密码模板时会明确提示;原 Credentials 条目不会被修改。
独立调试器不会自动读取隐藏的已保存密码,也不会接收内嵌生成器的签名密钥。它仍只支持 HMAC 签名生成和验签;内嵌工具的 HS256/RS256 生成能力保持不变。解码、签名和有效期是不同检查,均不能单独保证 Broker 接受。时间按 Settings 时区显示;回填上限为 65,535 字节。
Token、密钥和临时草稿保留在当前窗口内存中,不新增自动持久保存。跳转 URL 只包含一次性随机 ID;传递上下文十分钟后失效,刷新或完整重载也会清空内存。来源失效时不能覆盖其他表单。明确回填仍通过当前应用 Runtime,因此连接 Remote Runtime 不等于整个流程都留在浏览器中。
当前源码在 工具 → 数据与文本 下默认开放 JSON 工具,提供查看、查询和比较。无需配置环境变量,也可打开 /tools?tool=json-workbench。这不代表已有安装包包含本次功能。
打开、粘贴、格式化、复制和保存位于输入旁。内部替换和清空可以撤销;修复、脱敏和修改后的载荷回填使用真实文本 Diff,确认后才应用。格式化内容保留数字写法、转义、成员顺序和重复键;Compare 中的格式化显示只改变视图。
重置按钮直接显示在工作台顶部,文字前带有重置图标。
重复成员不会被静默合并。有歧义的路径及不安全的 Unicode 解码操作会被禁用;Compare 改为原文比较,不提供 Pointer/Patch 导出。JSON 原始值仍可读取。显示受限时会明确提示,不以部分内容冒充完整结果。
消息详情在受限预览旁提供完整原文入口。坏 JSON 有显式原文修复入口,但仍检查完整性、UTF-8、大小和权限。上一条比较限定同一 Broker、Client 和 Topic;手动基准可以查看或清除。Monitor 导入的是已授权的脱敏元数据,不是 MQTT 原始载荷。
Composer、Send Window、定时消息和 Bench 共用基础 JSON 编辑与模板快照。Will 可有界回填到尚未保存的连接或分组表单。保留原稿返回与应用并返回是不同动作;恢复失败后可继续处理或重试保留原稿返回。这些动作不会发布消息、保存连接配置、重连、启动 Replay 或压测。复制和保存复用应用现有能力,取消不会再触发一次下载;建议文件名区分输入、结果和 Patch,不暴露原文件目录。
文档上限为 25 MiB,超过 5 MiB 需显式分析。普通发送编辑器保留 1 MiB 限额,文件回填为 16 MiB,Will 为 65,535 个 UTF-8 字节。草稿、副本状态和一次性传递保留在当前浏览器/WebView 内存中,传递 ID 十分钟后过期;刷新会清除这些内存。已有 Local 载荷历史是另一套机制。显式回填经过当前应用 Runtime,因此 Remote Runtime 不代表所有处理都留在用户设备上。
订阅告警继续使用点路径,提供带类型、样本值的字段筛选;不能准确表达的键名会被禁用,不会改按 JSON Pointer 解释。字段求值保留整数精度,并拒绝重复键或无法安全表示的 JSON 值;仍可使用 :raw 匹配原文。Webhook Headers 默认使用键值列表并保留高级 JSON 模式;非法输入不会被丢弃,重复名称、非字符串值和控制字符会在保存或发送前被拒绝。
Schema 校验和 Topic Schema 绑定仍等待 JSV 上游。本轮不新增 Replay JSON Pointer 检查、原生跨平台认证、JSON Lines、超过 25 MiB 的文档、远程 URL 获取、远程 Schema 加载或云分享。
开发分支已实现 Sparkplug 工具,入口位于 工具 → 数据与文本,也可打开 /tools?tool=sparkplug-workbench。验收仍在进行,这不代表已有安装包包含该功能。
从发送编辑器打开 Sparkplug 时,普通消息自动打开结构化文档,动态草稿自动保留模板原文。需要查看渲染结果时,可在 Sparkplug 入口旁显式打开一次性快照,原始草稿不会改变。应用快照前需确认动态表达式将变为固定值。草稿确认框只展示消息内容的变化,不显示内部执行策略或编辑器状态。
可以打开工作台 JSON 文档,或附带 Topic、QoS、retain 导入原始载荷。确认替换当前文档后,按需点击“分析”。查看、编辑、验证和比较共用同一文档;标量、Array、DataSet、Template、Properties 和 Metadata 提供类型化编辑。精确整数保留为十进制文本,二进制使用显式 Hex;未提供字段与零、false、空值分别保留。
原始载荷导出保持输入字节。修改后编码生成受支持的表示,不承诺 Protobuf 字节排列与原文相同。遇到无法安全保留的未知或冲突 wire 结构,会阻止普通修改后输出;创建受支持副本需要明确选择。Message、State、Byte 比较回答不同问题,DATA 缺少某个指标不等于状态删除,上下文不完整也不能证明完整相同。
在消息差异中处理 alias-only DATA/CMD 指标时,需明确勾选 Birth 上下文,分别选择左右截点。两侧文档必须处于同一来源且实体兼容,各自使用对应的 Birth 证据,不把解析出的名称或 datatype 写回消息。嵌套 Template 成员按定义路径解析,不借用节点级 alias。未启用 Context 时,多义身份保持未解析;缺截点或作用域不兼容会被拒绝。报告显示所选 Birth 引用,完整报告保留导入证据,但不导出 Runtime 能力 token。
Hex 和 Base64 文本输入每页最多显示 4096 个字符,偏移和总数按文本字符计算,不是解码后的字节数。翻页保留完整草稿,应用仍需预览确认。输入法组合结束后才保存输入,不会静默删除不支持的字符;文件替换和原始字节导出的边界不变。
Birth 上下文按来源和历史截点解释。返回可编辑草稿前需预览并确认,目标过期时拒绝覆盖。这些操作不会发布 MQTT 消息、重连、启动定时任务、Replay 或压测;Monitor 元数据不能作为 Sparkplug 原始载荷来源。分析和编码由当前应用 Runtime 执行,不必连接 Broker,但 Remote Runtime 处理不等于纯浏览器本地处理。
工作台文本上限为 25 MiB,原始二进制上限为 16 MiB,同时受深度、节点和各操作限额约束。Hex 展开后可能超过可编辑文档预算,目标草稿仍遵循自身上限。已验证大文件浏览器往返和独立 macOS 启动,完整原生交互、性能和工作流验收尚未完成。本次不提供模拟器、自动生命周期管理、云同步、通用 Protobuf 编辑器或新的 MCP/CLI 执行接口。
二进制工具位于“工具 → 数据”,也可以通过 /tools?tool=binary-workbench 打开。以下说明对应当前源码,不代表已安装的正式版已经包含这些变化。
输入时明确选择 Hex、Base64、UTF-8 或原始文件。Hex 中的 41 42 00 FF 生成 4 字节;同样内容按 UTF-8 导入则是 11 个文本字节。Hex 只接受成对字符和 ASCII 空白,A B 表示单字节 AB。奇数位、非 ASCII 空白、0x 列表和未知字符会报错,不裁剪原文,也不补零。
首次进入直接使用网格,检查器和 Builder 默认收起。查找和定位按需展开,工具栏空间不足时收入“更多”。定位接受十进制或 0x 位置,并可指定精确选区长度;长度为零表示插入光标。Hex 和 ASCII 列都可点击选择。空文档粘贴及末尾追加可以直接撤销,不再弹替换确认;不等长替换和文档中间插入仍需确认。主按钮和网格内 Cmd/Ctrl+C 在没有选区时复制全部,有选区时只复制选区。按钮说明范围,成功反馈说明侧别、编码和字节数。剪切、删除和导出选区不会在没有选区时改为操作全部。菜单区分 Base64 与严格 UTF-8、当前内容与原始来源。
检查器可以整体折叠和调整宽度,默认先展示读数。展开“修改数值”后才能按精确宽度写入数值或位;切换解释类型和字节序本身不修改字节。256 字节 UTF-8 窗口提供严格文本和转义视图。不超过 64 Ki 个 UTF-16 码元的导入文本停顿 200 ms 后自动预览,更大输入和原始文件需手动生成预览。应用时重新检查捕获的目标范围,只产生一次撤销记录。Builder 位于可折叠的下方面板,展示每行位置、字节、真实编码值及浮点舍入;Float32 0.1 不会被描述成精确的十进制十分之一。
比较仍按字节位置进行,不识别逻辑插入。A、B 标题就地显示来源、长度、只读和修改状态,B 始终只读;检查器、查找、定位、复制和导出跟随活动侧。文本 B 只需确认一次“载入”,打开 B 文件则直接载入,两者都会自动比较。A 的有效编辑及撤销、重做在停顿 300 ms 后更新。取消输入对话框保留原 B,未完成或非法输入不能继续使用旧结果。
结果分别说明差异段数、不同字节位置数,以及哪一侧多了字节。内容一致时不显示导航;一段差异提供“定位差异”,多段差异使用“上一段/下一段”,内部处理分页。自动更新保留用户的光标、选区、活动侧和逻辑滚动位置,只有主动定位差异才会选中对应范围。“只看差异”保留真实 offset、前后各两行上下文及可展开的隐藏字节,复制仍取实际字节。
按实际字体和网格宽度计算,只要两侧都能容纳完整 8 列就左右排列,否则上下排列,两侧统一采用 8/16 列。后台比较不阻止普通复制,也不覆盖复制反馈;查找、文件读取和导出优先。“关闭比较”清空 B、输入草稿及结果,保留 A、撤销和编辑器返回权限,再次打开时 B 为空。同窗口普通导航仍可恢复打开且有效的比较,不承诺刷新或重启后恢复。
“打开文件”装载不可变来源。“编辑副本”和“恢复原始字节”只改变工作台草稿,恢复也可撤销。“文件 → 新建草稿”与恢复来源是两个不同操作。只有从发送区或发送窗口进入的授权 Hex 草稿才提供“应用到原 Hex 草稿”,并预览目标和字节变化。收到的消息可以返回来源页面,但不能覆盖原消息。导入、应用、恢复和返回都不会发布 MQTT,也不会启动定时任务。
各操作分别受限:只读检查 25 MiB,编辑及每侧比较 1 MiB,Hex 返回 512 KiB,文本复制 64 KiB,现有 File 上传 16 MiB。64 MiB 工作区预算还包含撤销及临时缓冲。不可用操作会说明大小或状态原因;原始字节导出不会暗中转码。文件名使用安全 basename,并区分原始、副本和选区,不再重复追加 .bin。